我想在打开Excel工作簿20秒后显示一条消息。代码是:
//ThisWorkbook
Private Sub Workbook_Open()
SetTimer
End Sub
//Module1
Public Sub SetTimer()
Application.OnTime Now + TimeValue("00:00:20"), "ShowMsg"
End Sub
Public Sub ShowMsg()
MsgBox ("my message")
End Sub
如您所见,代码非常简单,当用户不更新工作表或离开更新/关注的单元格时,它可以正常工作。但是,如果游标保留在单元格,则永远不会显示该消息。当单元格具有焦点或正在更新时,控件不会返回到VBA代码。对这个问题有什么想法吗?感谢
答案 0 :(得分:1)
这是一种解决方法:
Sub main()
Dim start As Single
start = Timer
Do
DoEvents
Loop Until Timer > (start + 20) '20 seconds
MsgBox "hello"
End Sub
修改。进一步问题的代码:
在名为Module1的模块中,输入以下代码:
Public start As Single
Sub main2()
start = Timer
Do
DoEvents
Loop Until Timer > (start + 20) '20 seconds
MsgBox "hello"
End Sub
在ThisWorkbook对象中(从Project Explorer中的对象列表中双击ThisWorkbook),输入以下代码:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Module1.start = Module1.start + 5
End Sub
每次更改工作簿中任何工作表中的任何单元格时,都会向计时器添加另外五秒钟。