У меня есть VBA UserForm в Excel с очень простым кодом. Он отображает коллекцию (словарь, на самом деле) объектов, по одному, с кнопками «первая, предыдущая, следующая и последняя». Все отлично работает, но если я буду постоянно щелкать следующей кнопкой, чтобы пройти через предметы, я должен щелкнуть ее медленно (примерно один раз в секунду). Если я нажимаю быстрее, щелчок игнорируется. Например, если я нажимаю четыре раза в течение двух секунд, он будет только «регистрировать» первый и третий клик и продвигаться дважды, а не четыре раза.Кнопка Excel UserForm нажимает медленное время отклика при быстром нажатии
Ниже приведен пример кода для кнопки «Next» (и другие применимые части кода в модуле 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
Любые идеи?
Сколько элементов в словаре? Что такое 'cQID'? Есть ли существенный код в любом из методов, которые вы вызываете в QID? – Comintern
cQID - это пользовательский класс с половиной десятков членов, очень простой. В словаре около 150 человек. Ваш комментарий поддерживает то, что Маргус сказал ниже о времени Excel, чтобы захватить объект; Я просто ожидаю слишком многого из Excel? Я заметил такое же поведение в аналогичной форме с похожим классом, но только около 20 элементов в словаре. – Zaimor