4

我正在使用出现在的所有解决方案:

如何通过 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 中自动执行此操作。

4

6 回答 6

2

你可以尝试使用Application.Calculation

Application.Calculation = xlCalculationManual
Application.Calculation = xlCalculationAutomatic
于 2012-11-22T13:42:32.700 回答
2

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

Range("D13").Calculate

或者

Cells(13, "D").Calculate
于 2012-11-22T13:46:11.287 回答
1

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

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")
于 2012-11-29T05:52:22.317 回答
1

只是提醒;

使用时要小心

Application.Calculation = xlCalculationManual
Application.Calculation = xlCalculationAutomatic

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

Application.Calculation = xlCalculationManual

您会注意到您的自动公式不再起作用。

干杯

于 2016-02-16T17:53:45.200 回答
0

Application.Calculate对我的功能不起作用。甚至不跟随DoEvents

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

下面是一个例子。

Sheets("Name_of_sheet").Range("D424").FormulaR1C1 = "=now()"
于 2021-03-05T19:36:29.020 回答
0

您可以通过将单元格/范围标记为脏来强制 Excel 重新计算单元格或单元格范围。

例子 :

' 重新计算 D4 列到 D24
Sheets("Name_of_sheet").Range("D4:D24").Dirty

' 重新计算单元格 D4
Sheets("Name_of_sheet").Range("D4").Dirty

于 2021-09-05T11:16:09.383 回答