有时(也许一年一次)我的代码中有一小部分需要某种延迟。
有时当调用此函数时,它会正确计算,但有时则不能。我发现当我单步执行该功能时,总是正确。因此,我尝试插入一些延迟。这些总能奏效,但看起来很愚蠢。
在下面的代码段中,我可以取消注释三条愚蠢行中的任何一条,并取得不同程度的成功。 (你可以看到我在想,也许Now或TimeValue函数可能是一个线索。)我也可以只注释+ TimeValue("00:00:00")
部分并得到不同的结果。现在,它适用于已注释掉的+ TimeValue("00:00:00")
部分。当我开始写这个问题时,我需要+ TimeValue("00: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