如果单击三次,我可以 运行 在 VBA 用户表单中添加子项吗? (或更多点击)
Can I run a sub in a VBA userform if something is triple clicked? (or more clicks)
我想知道当我的用户表单中的某些内容被三次点击(或多次点击)时,我是否可以 运行 一个 sub/macro?而“某物”可以是标签、图像、文本框或其他任何东西。
基本上是用这个方法:
Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
End Sub
但是点击三次?
我在网上搜索此类信息时运气不佳。
But it is intended to be used as a easter egg for someone who clicks on something more times than they are supposed to do. – Nick 1 hour ago
有趣 :) 为此,您将不得不使用 _Click()
、_DblClick()
和 Application.OnTime
.
逻辑:
- 在单击事件
_Click()
中启动计时器,如果计时器未使用 Application.OnTime
。 ,则 _DblClick()
- 1 秒后自动停止计时。
- 检查 1 秒内点击 3 次。
代码:
这是您正在尝试的吗?
将此粘贴到用户表单中
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
我想知道当我的用户表单中的某些内容被三次点击(或多次点击)时,我是否可以 运行 一个 sub/macro?而“某物”可以是标签、图像、文本框或其他任何东西。
基本上是用这个方法:
Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
End Sub
但是点击三次?
我在网上搜索此类信息时运气不佳。
But it is intended to be used as a easter egg for someone who clicks on something more times than they are supposed to do. – Nick 1 hour ago
有趣 :) 为此,您将不得不使用 _Click()
、_DblClick()
和 Application.OnTime
.
逻辑:
- 在单击事件
_Click()
中启动计时器,如果计时器未使用Application.OnTime
。 ,则 - 1 秒后自动停止计时。
- 检查 1 秒内点击 3 次。
_DblClick()
代码:
这是您正在尝试的吗?
将此粘贴到用户表单中
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