Tag: vba

如何获取Excel VBA中已更改单元格的旧值?

我正在检测Excel电子表格中某些单元格的值的变化,像这样… Private Sub Worksheet_Change(ByVal Target As Range) Dim cell As Range Dim old_value As String Dim new_value As String For Each cell In Target If Not (Intersect(cell, Range("cell_of_interest")) Is Nothing) Then new_value = cell.Value old_value = ' what here? Call DoFoo (old_value, new_value) End If Next cell End Sub 假设这不是一个很好的编码方式,我怎样才能在改变之前得到单元格的值?

在VBA中逐行读取/parsing文本文件

我试图用VBAparsing文本文档,并返回文本文件中给出的path。 例如,文本文件如下所示: *Blah blah instructions *Blah blah instructions on line 2 G:\\Folder\…\data.xls D:\\AnotherFolder\…\moredata.xls 我希望VBA一次加载1行,如果它以*开始,然后移动到下一行(类似于被注释的行)。 对于具有文件path的行,我想把这个path写入单元格,比如A2表示第一个path, B2表示下一个,等等。 我希望能够回答的主要问题是: 1.使用VBA读取文本文件的最佳/简单方法是什么? 2.我该怎么做,一行一行?

FormulaR1C1的function是什么?

我一直在看FormulaR1C1作为一个函数,这是如何工作的? 我明白在互联网上所说的第一行第一列是什么,但是人们究竟是怎么做到的呢? 使用FormulaR1C1的最终结果是什么? 也可以改变从一张纸上的特定点开始,或者它总是会是R1C1? 那么可能是FormulaR2C3 ?

如何将参数添加到不能以graphics方式显示的Excel中的外部数据查询?

我经常使用MS Excel的“ Get External Data来创build简单的报告 – 针对数据库运行查询并在Excel中很好地显示。 Excel的优秀function,如过滤和数据透视表,以及用户熟悉的界面使其非常适合。 但是,Microsoft Query的一个限制是不能将参数添加到无法以graphics方式显示的查询中,这大大限制了您可以编写的SQL。 是否有任何解决scheme的错误“参数不允许在查询中无法以graphics方式显示”?

使用VBA清除即时窗口?

有谁知道如何使用VBA清除即时窗口? 虽然我总是可以自己手动清除它,但我很好奇是否有办法以编程方式执行此操作。

如何禁止更新链接警告?

我正在尝试编写一个脚本来打开许多Excel文件。 我不断收到提示: This workbook contains links to other data sources. 我想保持这个消息不会出现,这样我的脚本就可以自动遍历所有的工作簿,而不必单击每个Don't Update 。 目前我正在使用以下内容: function getWorkbook(bkPath as string) as workbook Application.EnableEvents=False Application.DisplayAlerts=False getWorkbook=Workbooks.Open(bkPath,updatelinks:=0,readonly:=false) end function 不过,这个消息还在出现。 我怎样才能压制它? 编辑:看来,这个消息正在出现工作簿已经断开链接; 我没有看到This workbook contains one or more links that cannot be updated消息的This workbook contains one or more links that cannot be updated因为我将DisplayAlerts设置为false。 工作簿链接到我们的Windows服务器上的文件夹中的等效文件,所以当从该文件夹中删除匹配的文件(这是我们业务stream程的一部分)时,链接将中断。 当链接被破坏时,可以抑制警告吗? 另外,我正在使用Excel 2010。

在单元格更改时自动执行Excelmacros

每当特定单元格中的值发生更改时,如何自动执行Excelmacros? 现在,我的工作代码是: Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("H5")) Is Nothing Then Macro End Sub 其中"H5"是被监视的特定单元, Macro是Macro的名称。 有没有更好的办法?

如何在VBA中使用FileSystemObject?

有什么我需要参考? 我如何使用这个: Dim fso As New FileSystemObject Dim fld As Folder Dim ts As TextStream 我收到一个错误,因为它不能识别这些对象。