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)