Ree*_*iie 4 excel vba excel-indirect
我在工作簿中多次使用 INDIRECT 函数,它导致了性能问题。我需要用能给我相同结果的东西替换它们。每当发生任何更改时,所有间接都会重新计算,从而导致工作簿滞后。
我想知道是否有一种方法可以在 VBA 中编写 INDIRECT 而无需实际使用 INDIRECT 函数,并消除代码中函数的波动性。
=INDIRECT("'" & $AC$9 & "'!" & AC26)
Run Code Online (Sandbox Code Playgroud)
这是一个例子。我需要删除 INDIRECT 但对此单元格得到相同的结果。有没有办法在VBA中实现这一点?
你可以试试这个。
将以下例程放入标准代码模块中:
Public Function INDIRECTVBA(ref_text As String)
INDIRECTVBA = Range(ref_text)
End Function
Public Sub FullCalc()
Application.CalculateFull
End Sub
Run Code Online (Sandbox Code Playgroud)
将INDIRECT公式中的函数替换为INDIRECTVBA.
这些将是静态的。如果你的工作簿的缓慢是因为你的间接不断地评估,那么这将结束这种情况。
重要提示:所有包含公式的单元格都INDIRECTVBA将是静态的。每个公式都会在您确认后进行计算,但当先例发生变化时不会重新计算。
然后,您将需要一种方法来迫使它们在方便的时间重新计算。您可以从功能区执行此操作。或者,你可以运行FullCalc。