1 Application.OnTime 使用时的局限性
- Application.OnTime
- 局限性1 不再一个模块内的 过程/函数 不能被找到
- 局限性2 一个神奇BUG,如果 过程/函数名字带数字,直接双引号会报找不到宏,需要里面再加一层单引号 如"'t7'"
- 问题3,函数的调用好像比sub 快一些
2 application.ontime 调用其他sub /function 时,显示无法执行宏的解决办法,需要里面再加一层单引号 如"'t7'"
2.1 出问题代码
- 下面这2种写法,正常都是正确,但都会报错
- Application.OnTime Now + TimeValue("00:00:02"), procedure:="t7"
- Application.OnTime Now + TimeValue("00:00:02"), procedure:="t7()"
Sub t6()
Debug.Print "开始调用"
Application.OnTime Now + TimeValue("00:00:02"), procedure:="t7"
Application.OnTime Now + TimeValue("00:00:02"), "t8"
Debug.Print "继续往下执行,不等待外部调用"
End Sub
Public Sub t7()
Debug.Print "hello world1"
End Sub
Function t8()
Debug.Print "hello world2"
End Function
2.2 解决后代码
- 需要里面再加一层单引号 如"'t7'" 就可以找到对应 sub /function 不会报错
Sub t6()
Debug.Print "开始调用"
Application.OnTime Now + TimeValue("00:00:02"), procedure:="'t7'"
Application.OnTime Now + TimeValue("00:00:02"), "'t8'"
Debug.Print "继续往下执行,不等待外部调用"
End Sub
Public Sub t7()
Debug.Print "hello world1"
End Sub
Function t8()
Debug.Print "hello world2"
End Function