程序流意外行为

Program flow unexpected behavior

我正在 运行宁以下子,在另外两个子里面:

Sub SalvaDadosLogin()

 1:   ThisWorkbook.Worksheets("Registro").range("a11") = loginComdinheiro
 2:   ThisWorkbook.Worksheets("Registro").range("a12") = senhaComdinheiro
 3:   ThisWorkbook.Worksheets("Registro").range("a14") = salvaSenhaComdinheio
 4:   ThisWorkbook.Save

End Sub

有时,当我 运行 这个子程序时,我的 VBE 开始执行用户定义的函数(在 运行 执行第 1 行之后)。其他时候它不会执行,并且执行该子程序的其他行。我不知道是什么原因造成的,因为测试条件没有改变。

为什么我的工作表在第 1 行之后被重新计算?

没有更多信息,您似乎正在更改工作表,这会触发重新计算。

您可以暂停重新计算并稍后恢复。

let savedCalcMode = Application.Calculation
Application.Calculation = xlCalculationManual
On Error Goto restore
...
restore:
Application.Calculation = savedCalcMode

如果你这样做,即使出现错误也要尝试恢复,否则你将完成将全局计算状态留在一个有趣的设置中,因此是 On Error 部分。

(仅供参考,当您恢复计算模式时,它几乎会立即重新计算整个工作表,这意味着您不想在不需要时执行 save/restore。)