我尝试了Workbook_SheetCalculate事件并试图触发它,但它没有用,虽然我重新计算了工作表!
如何触发此事件?
答案 0 :(得分:2)
这里有一个例子,在事件的工作表中有以下代码:
Private Sub Worksheet_Calculate()
MsgBox "Calculating"
End Sub
然后在工作表中的任何单元格中输入=RAND()
该公式会导致重新计算并触发事件。
或者从标准模块使用以下内容:
Public Sub Test()
'Application.Calculate ''could use this event for the workbook
With Worksheets("Sheet5") 'sheet containing the event code
.Calculate
End With
End Sub
关键似乎是工作表中有一些东西要计算,例如=RAND()
。
我记得另一篇文章,在某个时候,链接到以下Excel’s Smart Recalculation Engine
快速摘录说:
Excel通常只计算可能的最小单元格数。
Excel的智能重新计算引擎通常可以最大限度地减少计算 时间跟踪变化并仅重新计算
- 已更改或标记为需要重新计算的单元格,公式,值或名称。
- 细胞依赖于需要重新计算的其他细胞,公式,名称或值。
因此,如果您在工作表中只有常量,即使您发出了Worksheet.Calculate,也不会出现msgbox。您可以通过从工作表中删除=RAND()
并将1
放入单元格来对此进行测试。
答案 1 :(得分:1)
如果我有两张表,每张都有一个非易失性公式,并且这在工作簿模块中:
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Debug.Print Sh.Name
End Sub
我在调用时看到两个工作表名称:
Application.CalculateFull
或:
Application.CalculateFullRebuild
但没有输出:
Application.Calculate
如果我在其中一张纸上添加挥发性配方,那么在致电Application.Calculate
时我会收到该表。
如果您仍然遇到问题,则需要发布一些详细信息,包括您的活动代码以及您在工作表上的公式类型。