Excel UserForm按钮单击快速单击慢响应时间

时间:2015-06-17 03:40:41

标签: performance vba button click userform

我在Excel中有一个VBA UserForm,代码非常简单。它一次显示一个对象的集合(实际上是字典),带有“first,previous,next和last”按钮。一切都很好,但如果我不断点击下一个按钮来浏览项目,我必须慢慢点击它(大约每秒一次)。如果我更快地点击,则忽略点击。例如,如果我在两秒钟内点击四次,它只会“注册”第一次和第三次点击并提前两次,而不是四次。

下面是“下一个”按钮的示例代码(以及userform模块中其他适用的代码段):

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

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

windows 正在检查双击。所以如果你快速点击它会注册一个双击。

2 个选项。在 Windows 鼠标设置中提高双击速度 或者做一个双击事件