Excel VBA公式不能完全计算

我有一个切换单元格,在我的工作簿中的多个工作表中进行计算。 目标是,只要切换单元格发生更改,工作簿就会重新计算并提供更新编号。

我打开了手动计算。

以下是我尝试过的方法(注意代码是在表单中)

Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Cells(3, 4)) Is Nothing Then Application.Calculate End If 
 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Cells(3, 4)) Is Nothing Then Application.CalculateFull End If 
 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Cells(3, 4)) Is Nothing Then Application.CalculateFullRebuild End If 
 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Cells(3, 4)) Is Nothing Then range("DI:DI").calculate 'to calculate the specific range which drives the updated numbers End If 

这些方法都不起作用。 唯一的方法是保存工作簿和一切计算。

有什么想法吗?

– – – – – – – – – – – – – – -编辑 – – – – – – – – – – ———

只有到目前为止工作的解决scheme,强制计算驱动最终结果的所有单元格。 希望有一个更优雅的解决scheme。 总运行时间〜3秒\

 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Cells(3, 4)) Is Nothing Then Worksheets("Dashboard").Range("af3").Calculate Worksheets("Base").Range("R1:R50000").Calculate Worksheets("Control").Range("R1:R50000").Calculate Worksheets("Base").Range("DI1:DI50000").Calculate Worksheets("Control").Range("DI1:DI50000").Calculate Worksheets("Dashboard").Range("W10:W5000").Calculate Worksheets("Dashboard").Range("L10:L5000").Calculate Worksheets("Dashboard").Range("Y10:Aa5000").Calculate Worksheets("Dashboard").Range("B2:B7").Calculate end if 

 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Cells(3, 4)) Is Nothing Then Worksheets("Dashboard").Range("af3").Calculate Worksheets("Base").Range("R1:R50000").Calculate Worksheets("Control").Range("R1:R50000").Calculate Worksheets("Base").Range("DI1:DI50000").Calculate Worksheets("Control").Range("DI1:DI50000").Calculate Worksheets("Dashboard").Range("W10:W5000").Calculate Worksheets("Dashboard").Range("L10:L5000").Calculate Worksheets("Dashboard").Range("Y10:Aa5000").Calculate Worksheets("Dashboard").Range("B2:B7").Calculate end if 

强制重新计算所有相关范围。

其他方法可能无法正常工作,因为文件很大(〜30mb)