Tag: vba

如何跳到VBA编辑器的行号?

我在Office 2010中使用了VBA。在顶部,有一个包含行号和列号的框,例如: Ln 1480, Col 17 有没有办法直接跳转到代码编辑(而不是执行)的另一个行号,就像我会在记事本中使用Ctrl+G ? 这MSDN的答案表明,这是不可能的,但我希望有人已经find一种方法来做这种编辑导航。 我知道可以在下拉菜单中点击一个过程名称,但不幸的是,我正在处理几百行程序,直到我将它们重构为止,能够包含行号在我的错误跟踪器中,当我正在解决这个问题的时候,跳到那一行。

在公式单元格上使用Range.Replace

我有一个从A1到A10的简短列表: A4包含stringab , A5包含公式: ="a" & "b" 如果我运行: Sub Test1() Dim r As Range Set r = Range("A1:A10") r.Replace What:="ab", Replacement:="x" End Sub 只有A4被修改。 我怎样才能让replace方法适用于这两种情况? 编辑#1: 我总是可以使用循环来检查/逐项replace,但是replace要快得多。 我想我可以build立和使用一个临时的AutoFilter,但这似乎是极端的。

如何使用Excel VBAmacros循环行?

我是VBA新手,但对PHP很好。 这就是说,我正在苦于与VBA循环… 我有这个表格有40行叫做“SH1”: SH1 ABCDE 1 2 One 1.0a 12 2 7 Two 2.0b 34 3 13 Three 3.0c 56 4 14 Four 4.0d 78 .. 40 我需要遍历40行,并检查列A中的值。如果列A中的值符合我的标准(见下文),生成一些输出,并把它放在另一个表。 我的输出表是3列,称为“SH2”: SH2 ABCDE 1 1.0a 12 One 2.0b 34 Two 2 3.0c 56 Three 4.0d 78 Four .. 15 我决定什么去哪里的标准: // First loop: if a1 < 8, […]

使用VBA在Excel中刷新对VBProject.VBComponents的更改

我一直在Excel中遇到一些奇怪的怪癖,同时编程删除模块,然后重新从文件中导入它们。 基本上,我有一个名为VersionControl的模块,应该将我的文件导出到预定义的文件夹,并按需重新导入它们。 这是重新导入的代码(问题在下面描述): Dim i As Integer Dim ModuleName As String Application.EnableEvents = False With ThisWorkbook.VBProject For i = 1 To .VBComponents.Count If .VBComponents(i).CodeModule.CountOfLines > 0 Then ModuleName = .VBComponents(i).CodeModule.Name If ModuleName <> "VersionControl" Then If PathExists(VersionControlPath & "\" & ModuleName & ".bas") Then Call .VBComponents.Remove(.VBComponents(ModuleName)) Call .VBComponents.Import(VersionControlPath & "\" & ModuleName & ".bas") Else […]

“无法获取WorksheetFunction类的VLookup属性”错误

我试图开发一个表单来跟踪他们进来的发票。表单将有一个combobox,我可以点击并select一个供应商编号。 我希望文本框根据从combobox中select的供应商编号自动填写。 以下是我到目前为止: Private Sub ComboBox1_Change() 'Vlookup when ComboBox1 is filled Me.TextBox1.Value = Application.WorksheetFunction.VLookup( _ Me.ComboBox1.Value, Worksheets("Sheet3").Range("Names"), 2, False) End Sub 工作表3是从中绘制信息(供应商编号和名称)。 当我回到表单来testing代码时,出现以下错误: 运行时错误“1004”:无法获取WorksheetFunction类的VLookup属性 我该如何解决?

自定义事件不会触发

我在Excel 2010,我似乎正在得到一个奇怪的意外的行为与自定义事件。 我很确定这种方法在几年前对我来说很有效(也许是在Excel 03/07 – 不记得了), 或者 我只是搞砸了一些东西 。 这是一个repro: 添加一个新的类模块并将其命名为Factory Public Event AfterInitialize() Private Sub Class_Initialize() RaiseEvent AfterInitialize End Sub 添加另一个类模块,名称是FactoryTest Private WithEvents cFactory As Factory Private Sub Class_Initialize() Set cFactory = New Factory End Sub Private Sub cFactory_AfterInitialize() Debug.Print "after inialized…" End Sub 和一个标准Module1并运行下面 Sub Main() Dim fTest As FactoryTest Set fTest = […]

2列快速比较法

编辑:而不是我的解决scheme,使用类似的东西 For i = 1 To tmpRngSrcMax If rngSrc(i) <> rngDes(i) Then … Next i 它快了100倍。 我必须使用VBA比较包含string数据的两列。 这是我的做法: Set rngDes = wsDes.Range("A2:A" & wsDes.Cells(Rows.Count, 1).End(xlUp).Row) Set rngSrc = wsSrc.Range("I3:I" & wsSrc.Cells(Rows.Count, 1).End(xlUp).Row) tmpRngSrcMax = wsSrc.Cells(Rows.Count, 1).End(xlUp).Row cntNewItems = 0 For Each x In rngSrc tmpFound = Application.WorksheetFunction.CountIf(rngDes, x.Row) Application.StatusBar = "Processed: " & x.Row & […]

Excel打开另一个工作簿后不完成macros

我试图让VBA发射命令 sImportFilePath = Application.GetOpenFilename(FileFilter:= _ "Excel Files (*.xls), *.xls", Title:="Choose The Source File") Application.Workbooks.Open (sImportFilePath) sImportFileName = FunctionGetFileName(sImportFilePath) 而且,当我逐步完成这个function时,它们会工作,但是当我使用热键Ctrl + Shift + F或任何其他热键时, Application.Workbooks.Open命令可以工作,但它会导航新的Excel文档,因此不会执行任何操作。 但是,当我在开发人员选项卡中打开“macros”,select我的macros,然后单击“运行”一切运行正常。

Dir()函数不适用于Mac Excel 2011 VBA

嗨,我想列出Excel工作簿所在的子目录中的所有文件。出于某种原因,代码不能超出Dir函数执行。 任何人都可以请指教? 谢谢! Sub ListFiles() ActiveSheet.Name = "temp" Dim MyDir As String 'Declare the variables Dim strPath As String Dim strFile As String Dim r As Long MyDir = ActiveWorkbook.Path 'current path where workbook is strPath = MyDir & ":Current:" 'files within "Current" folder subdir, I am using Mac Excel 2011 'Insert the headers in […]

VBA插入embedded式图片excel

我看过很多关于我们xlApp.activesheet.Pictures.Insert(strImagePath)的post,用VBA插入图片到电子表格中,效果很好。 唯一的问题是它把它作为一个链接的图片插入。 所以如果我把电子表格从我们的networking发送出去,图像就会失败。 任何人都可以告诉我如何使用Pictures.Insert将图像作为embedded式图像,或者其他方法将它embedded? 如果有帮助的话,我也可以从访问中调用这个方法。