Excel VBA有时需要延迟(Application.Wait或Debug.Print)

Excel VBA有时需要延迟(Application.Wait或Debug.Print),vba,excel,Vba,Excel,多年来我注意到了这一点,所以它适用于Excel 2007和很久以前,我希望其他人也看到了这一点,并找到了治疗方法 有时可能一年一次,我的代码中有一小部分需要某种延迟 有时调用此函数时计算正确,但有时计算不正确。我发现,当我逐步完成函数时,它总是正确的。因此,我尝试插入一些延迟。这些总是有效的,但似乎很愚蠢 在下面的代码片段中,我可以取消注释这三行愚蠢的代码中的任何一行,并获得不同程度的成功。你可以看到,我在想,也许Now或TimeValue函数是一个线索。我也可以只注释出+TimeValue00

多年来我注意到了这一点,所以它适用于Excel 2007和很久以前,我希望其他人也看到了这一点,并找到了治疗方法

有时可能一年一次,我的代码中有一小部分需要某种延迟

有时调用此函数时计算正确,但有时计算不正确。我发现,当我逐步完成函数时,它总是正确的。因此,我尝试插入一些延迟。这些总是有效的,但似乎很愚蠢

在下面的代码片段中,我可以取消注释这三行愚蠢的代码中的任何一行,并获得不同程度的成功。你可以看到,我在想,也许Now或TimeValue函数是一个线索。我也可以只注释出+TimeValue00:00:00部分,得到不同的结果。现在,它与注释掉的+TimeValue00:00:00部分一起工作。当我开始写这个问题时,我需要+TimeValue00:00:00部分

有人见过这个吗?有治疗方法吗。任何帮助都将不胜感激

我无法给出35个模块、类、工作表和表单中数千行的所有代码,但这里有一个片段:

Private Function Calc_4( _
        s As Long, _
        i As Long _
        ) As Boolean

   Dim l_d_DummyDoubleForWaiting as Double

   On Error GoTo EWE

   With w.cmp(s)

      'This fake delay seems to be required sometimes
      'Application.Wait Now + TimeValue("00:00:00")
      'Debug.Print Now + TimeValue("00:00:00")
      'l_d_DummyDoubleForWaiting = Now + TimeValue("00:00:00")

      .d_O(i) = _
            O_Given_Dh_and_a( _
                  .d_Dh(i), _
                  .pipe_Suction.fluid_out(i).d_a)

      [Bunch of stuff]

   End With

   Calc_4 = True
   Exit Function
EWE:
   Calc_4 = False
End Function

Private Function O_Given_Dh_and_a( _
      i_d_Dh As Double, _
      i_d_a As Double _
      ) As Double

   If (i_d_a_ft_per_s = 0) Then

      O_Given_Dh_and_a = 0

   Else

      O_Given_Dh_and_a = _
               i_d_Dh _
             / i_d_a ^ 2

   End If

End Function