我具有VBA代码来运行特定代码,并且我尝试通过使用以下行为其提供3秒的等待时间来暂停下一次执行:
Application.Wait (Now + TimeValue("00:00:03"))
但是出现以下错误:
错误:找不到方法或数据变量
答案 0 :(得分:2)
在开发代码时,最好使用外部库引用(早期绑定)。早期绑定具有智能感知和帮助文档的优势。早期绑定的主要缺点是,如果安装了其他版本的库,则需要更新引用。这样最好是在分发外部引用之前将其删除,并将其转换为后期绑定。
后期绑定使用CreateObject
来导入和实例化类对象。
CreateObject("Excel.Application").Wait (Now + TimeValue("00:00:05"))
或者,您可以引用WinApi Sleep
函数。
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
用法:
Sleep 3000 '3000 Milliseconds = 3 second delay
答案 1 :(得分:1)
我尝试了Excel.Application.Wait(Now + TimeValue("00:00:03"))
,它像一种魅力一样工作!
答案 2 :(得分:1)
我在所有需要粘贴操作的宏中都使用此功能(有时粘贴太快,电脑无法及时复制所选内容导致错误):
Function Wait(ByVal Seconds As Single)
Dim CurrentTimer As Variant
CurrentTimer = Timer
Do While Timer < CurrentTimer + Seconds
Loop
End Function
然后在任何“Selection.Paste”或“Selection.PasteSpecial”之前应用以下内容:
Application.Excel.Wait (Now + TimeValue("00:00:01"))
您可能还需要启用“工具”>“参考”中的“ExcelPlugInShell 1.0 类型库”才能使其正常运行,因为它默认使用 MS Word 中不可用的语言。
答案 3 :(得分:0)
这对我有用:
Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 0
Dim errorCode As Integer
errorCode = wsh.Run("timeout 5", windowStyle, waitOnReturn)
此代码允许运行cmd命令并等待执行完成,在这种情况下,我正在运行命令“ timeout 5”,它仅等待5秒钟。 我找到了文档here