[英]Can I run a sub in a VBA userform if something is triple clicked? (or more clicks)
我想知道當我的用戶表單中的某些內容被三次點擊(或更多點擊)時我是否可以運行子/宏? 而“某物”可以是 label、圖像、文本框或其他任何內容。
基本上使用這種方法:
Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
End Sub
但是三次點擊?
我在 web 中搜索此類信息時沒有運氣。
但它的目的是用作復活節彩蛋,供點擊次數超過預期次數的人使用。 – 尼克 1 小時前
有趣:) 為此,您將不得不使用_Click()
、 _DblClick()
和Application.OnTime
。
邏輯:
_Click()
和_DblClick()
中啟動計時器(如果計時器未使用Application.OnTime
開啟)。代碼:
這是你正在嘗試的嗎?
將此粘貼到用戶表單中
Option Explicit
Private Declare PtrSafe Function GetTickCount Lib "kernel32" () As Long
Private Sub UserForm_Click()
ClicksCount
End Sub
Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
ClicksCount
End Sub
Private Sub ClicksCount()
If TimerOn = False Then StartTimer
'~~> Check for the first click
If StartTick = 0 Then
StartTick = GetTickCount
ClickCount = ClickCount + 1
Else
EndTick = GetTickCount
ClickCount = ClickCount + 1
End If
If ClickCount > 2 Then
MsgBox "Triple clicked"
StartTick = 0: EndTick = 0: ClickCount = 0
End If
End Sub
將其粘貼到模塊中
Option Explicit
Public StartTick As Long, EndTick As Long, ClickCount As Long
Public TimerOn As Boolean
Sub StartTimer()
StartTick = 0: EndTick = 0: ClickCount = 0: TimerOn = True
Application.OnTime Now + TimeValue("0:00:01"), "StopTimer"
End Sub
Sub StopTimer()
StartTick = 0: EndTick = 0: ClickCount = 0: TimerOn = False
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.