【问题标题】:Excel UserForm button click slow response time when clicked fastExcel UserForm 按钮单击时响应速度慢
【发布时间】:2015-09-02 02:52:07
【问题描述】:

我在 Excel 中有一个 VBA 用户窗体,代码非常简单。它一次显示一个对象的集合(实际上是字典),并带有“第一个、上一个、下一个和最后一个”按钮。一切都很好,但如果我要不断地点击下一个按钮来浏览这些项目,我必须慢慢地点击它(大约每秒一次)。如果我点击得更快,点击就会被忽略。例如,如果我在两秒钟内点击四次,它只会“注册”第一次和第三次点击并前进两次,而不是四次。

以下是“下一步”按钮的示例代码(以及用户表单模块中其他适用的代码):

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

有什么想法吗?

【问题讨论】:

  • 词典中有多少项?什么是cQID?您在 QID 上调用的任何方法中是否有大量代码?
  • cQID 是一个自定义类,有六个成员,非常简单。字典中有大约 150 个。您的评论支持 Margus 在下面所说的关于 Excel 需要时间来抓取对象的说法;我对 Excel 的期望太高了吗?我注意到在具有类似类但字典中只有大约 20 项的类似表单上存在相同的行为。

标签: performance vba button click userform


【解决方案1】:

我个人只会在加载内容时禁用按钮。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-05
      • 1970-01-01
      • 2019-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多