程序流意外行为

时间:2015-06-11 18:47:42

标签: excel vba excel-vba excel-formula breakpoints

我正在运行以下Sub,它位于其他两个潜艇中:

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行后重新计算?

1 个答案:

答案 0 :(得分:0)

如果没有进一步的信息,您似乎正在更改工作表,这会触发重新计算。

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

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

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

(仅供参考,当您恢复计算模式时,它会立即重新计算完整的工作表,这意味着您不需要在不需要时进行保存/恢复。)