Excel VBA有时需要延迟(Application.Wait或Debug.Print)
多年来我注意到了这一点,所以它适用于Excel 2007和很久以前,我希望其他人也看到了这一点,并找到了治疗方法 有时可能一年一次,我的代码中有一小部分需要某种延迟 有时调用此函数时计算正确,但有时计算不正确。我发现,当我逐步完成函数时,它总是正确的。因此,我尝试插入一些延迟。这些总是有效的,但似乎很愚蠢 在下面的代码片段中,我可以取消注释这三行愚蠢的代码中的任何一行,并获得不同程度的成功。你可以看到,我在想,也许Now或TimeValue函数是一个线索。我也可以只注释出+TimeValue00:00:00部分,得到不同的结果。现在,它与注释掉的+TimeValue00:00:00部分一起工作。当我开始写这个问题时,我需要+TimeValue00:00:00部分 有人见过这个吗?有治疗方法吗。任何帮助都将不胜感激 我无法给出35个模块、类、工作表和表单中数千行的所有代码,但这里有一个片段:Excel VBA有时需要延迟(Application.Wait或Debug.Print),vba,excel,Vba,Excel,多年来我注意到了这一点,所以它适用于Excel 2007和很久以前,我希望其他人也看到了这一点,并找到了治疗方法 有时可能一年一次,我的代码中有一小部分需要某种延迟 有时调用此函数时计算正确,但有时计算不正确。我发现,当我逐步完成函数时,它总是正确的。因此,我尝试插入一些延迟。这些总是有效的,但似乎很愚蠢 在下面的代码片段中,我可以取消注释这三行愚蠢的代码中的任何一行,并获得不同程度的成功。你可以看到,我在想,也许Now或TimeValue函数是一个线索。我也可以只注释出+TimeValue00
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