如果单击三次,我可以 运行 在 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.

逻辑:

  1. 在单击事件 _Click() 中启动计时器,如果计时器未使用 Application.OnTime
  2. ,则 _DblClick()
  3. 1 秒后自动停止计时。
  4. 检查 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