Excel 用户窗体按钮单击快时响应时间慢

Excel UserForm button click slow response time when clicked fast

我在 Excel 中有一个 VBA 用户窗体,代码非常简单。它显示对象的集合(实际上是字典),一次一个,带有 "first, previous, next, and last" 的按钮。一切都很好,但如果我要连续点击下一步按钮来浏览项目,我必须慢慢点击它(大约每秒一次)。如果我更快地点击,点击将被忽略。例如,如果我在两秒内点击四次,它只会 'register' 第一次和第三次点击并前进两次,而不是四次。

下面是 'next' 按钮的示例代码(以及用户表单模块中的其他适用代码):

Private dQIDs As Dictionary

Public Sub TransferQIDs(ByVal dIncomingQIDs As Dictionary)
    Set dQIDs = dIncomingQIDs
End Sub

Private Sub bNext_Click()
    Call LoadQID(CLng(lIndex.Caption) + 1)
End Sub

Private Sub LoadQID(lQID As Long)
    Dim QID As cQID
    Set QID = dQIDs(lQID)
    lIndex.Caption = lQID
    lItems.Caption = "Viewing new QID " & lQID & " of " & dQIDs.Count
    Me.tQID = QID.lQID
    Me.tTitle = QID.sTitle
    Me.tVID = QID.sVendorID
    Me.bOS = QID.bOSPatch
    Me.bApp = Not QID.bOSPatch
    Me.bPrev.Enabled = Not (lQID = 1)
    Me.bFirst.Enabled = Not (lQID = 1)
    Me.bNext.Enabled = Not (lQID = dQIDs.Count)
    Me.bLast.Enabled = Not (lQID = dQIDs.Count)
End Sub

有什么想法吗?

就我个人而言,我会在加载内容时禁用按钮。

Private Sub bNext_Click()
  Dim b1 As Button
  Set b1 = ActiveSheet.Buttons("LoadQID")
  REM or Me.LoadQID

  b1.Font.ColorIndex = 15
  b1.Enabled = False
  Application.Cursor = xlWait

  Call LoadQID(CLng(lIndex.Caption) + 1)

  b1.Enabled = True
  b1.Font.ColorIndex = 1
  Application.Cursor = xlDefault
End Sub

发生这种情况的原因是在 Excel 中访问单个对象需要相当多的时间。这样点击就可以注册了

或者您可以切换 UI 更新:

Application.ScreenUpdating = False
Application.ScreenUpdating = True

windows 正在检查双击。因此,如果您快速单击,它会记录一次双击。

2个选项。在 windows 鼠标设置中提高双击速度 或制作双击事件