我在电子表格中有一些单元格,选中后会打开一个文本框。
例如,如果用户在不停止的情况下通过单元格进行制表,我不希望打开该框,因此我希望Worksheet_SelectionChange在打开文本框之前等待两秒钟。如果选择在此之前移动,则计时器将被中断并重新开始新单元格。
我一直试图尝试:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If (Intersect(Target, [rSpecialInstr]) Is Nothing) Then Exit Sub
Application.Wait (Now + TimeValue("0:00:02"))
frmSpecialInstr.Show
End Sub
...但我有一个预先存在的问题,宏随机时间停止,所以我无法测试这个技巧。 (我希望当我解决另一个问题时,社区会引导我回答。)
我怀疑一旦选择落在一个单元格并启动此计时器,我实际上无法再次移动选择直到2秒通过。任何人都可以确认吗?
有没有更好的方法来完成这项任务?
答案 0 :(得分:1)
例如:
Dim d As Date
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'cancel any previous scheduled call
If d > 0 Then
Application.OnTime d, "Sheet1.test", , schedule:=False
d = 0
End If
'schedule?
If Not Intersect(Target, Range("A:A")) Is Nothing Then
d = Now + TimeValue("0:00:02")
Application.OnTime d, "Sheet1.test"
End If
End Sub
Sub test()
d = 0
MsgBox "ok"
End Sub