【发布时间】: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