如何编写与 INDIRECT 函数等效的 Excel VBA 代码?

Ree*_*iie 4 excel vba excel-indirect

我在工作簿中多次使用 INDIRECT 函数,它导致了性能问题。我需要用能给我相同结果的东西替换它们。每当发生任何更改时,所有间接都会重新计算,从而导致工作簿滞后。

我想知道是否有一种方法可以在 VBA 中编写 INDIRECT 而无需实际使用 INDIRECT 函数,并消除代码中函数的波动性。

 =INDIRECT("'" & $AC$9 & "'!" & AC26)
Run Code Online (Sandbox Code Playgroud)

这是一个例子。我需要删除 INDIRECT 但对此单元格得到相同的结果。有没有办法在VBA中实现这一点?

Exc*_*ero 5

你可以试试这个。

将以下例程放入标准代码模块中:

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