如何使用VBA刷新单元格



我正在使用出现在以下位置的所有解决方案:

如何通过VBA刷新所有单元格

让 Excel 从 VBA 中刷新工作表上的数据

ActiveSheet.EnableCalculation = False  
ActiveSheet.EnableCalculation = True

Application.Calculate

Application.CalculateFull

它们都不适用于 Excel 2010。当我转到单元格并右键单击刷新时,它可以工作。如何在 VBA 中刷新?

Sheets("Name_of_sheet").Range("D424").Refresh引发

异常 438

问题:

  1. 如何使脚本支持 Excel 2003、2007、2010?
  2. 如何使用 VBA 选择要刷新的源文件?

编辑:

  1. 我想模拟鼠标右键单击并在worksheet 3的菜单中选择刷新。这就是整个故事。

  2. 我正在处理 10 年前创建的 Excel 文件。在Excel 2010中打开时,我可以转到一个单元格并右键单击它并选择"刷新",然后选择要从中刷新的.txt文件。我正在尝试在 VBA 中自动执行此操作。

你可以尝试使用Application.Calculation

Application.Calculation = xlCalculationManual
Application.Calculation = xlCalculationAutomatic

对于单个单元格,您可以使用:

Range("D13").Calculate

Cells(13, "D").Calculate

我终于使用鼠标事件和击键来做到这一点:

Sheets("worksheet34").Select
Range("D15").Select
Application.WindowState = xlMaximized
SetCursorPos 200, 600 'set mouse position at 200, 600
Call mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0) 'click left mouse
Application.SendKeys ("R")

只是一个提醒;

使用时要小心

Application.Calculation = xlCalculationManual
Application.Calculation = xlCalculationAutomatic

这会将整个 Excel 应用程序设置为自动或手动计算公式。如果您使用

Application.Calculation = xlCalculationManual

您会注意到您的自动公式不再有效。

干杯

您可以通过将单元格/区域标记为脏来强制 excel 重新计算单元格或单元格区域。

例:

' Recalculate Column D4 to D24
Sheets("Name_of_sheet").Range("D4:D24").Dirty

' Recalculate Cell D4<br>
Sheets("Name_of_sheet").Range("D4").Dirty<br>
Application.Calculate

我的函数不起作用。 即使后面跟着DoEvents也没有.

我发现有效的方法是在单元格中重新输入公式。获取公式的一种简单方法是 开始记录macro ,使用F2编辑单元格,然后按 enter 。 该宏将制作带有所有所需引号的函数文本的出色副本。

下面是一个示例。

Sheets("Name_of_sheet").Range("D424").FormulaR1C1 = "=now()"
Cells(x, y).Select
ActiveCell.FormulaR1C1 = Selection.Value

非常适合我

我在工作簿中有一个长"宏",> 20 MB,数万行,调用用 Fortran 编写的 dll。这些方法都不起作用:

Call Application.Calculate
Call Application.CalculateFull
Call Application.CalculateFullRebuild
Re-entering the formula
Range.Dirty
Application.Calculation = xlCalculationManual
Application.Calculation = xlCalculationAutomatic
ThisWorkbook.ActiveSheet.EnableCalculation = False
ThisWorkbook.ActiveSheet.EnableCalculation = True

这奏效了:

On Error Resume Next
Application.SendKeys "{F2}{Enter}{NumLock}"  'SendKeys turns off NumLock for some reason
On Error GoTo 0

这甚至在选择图表时有效。

最新更新