我在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
有什么想法吗?
答案 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 鼠标设置中提高双击速度 或者做一个双击事件