我正在使用出现在以下位置的所有解决方案:
如何通过VBA刷新所有单元格
让 Excel 从 VBA 中刷新工作表上的数据
ActiveSheet.EnableCalculation = False
ActiveSheet.EnableCalculation = True
或
Application.Calculate
或
Application.CalculateFull
它们都不适用于 Excel 2010。当我转到单元格并右键单击刷新时,它可以工作。如何在 VBA 中刷新?
Sheets("Name_of_sheet").Range("D424").Refresh
引发
异常 438
问题:
- 如何使脚本支持 Excel 2003、2007、2010?
- 如何使用 VBA 选择要刷新的源文件?
编辑:
我想模拟鼠标右键单击并在
worksheet 3
的菜单中选择刷新。这就是整个故事。我正在处理 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
这甚至在选择图表时有效。