У меня есть класс-оболочка VBA Excel.Worksheet с реализацией события SelectionChange
. Работа, выполняемая в этом случае, занимает около 1/2 секунды, что является приемлемой производительностью при щелчке по листу. Однако, удерживая нажатой клавишу со стрелкой на клавиатуре для масштабирования вокруг листа, как вы можете себе представить, это заметно плохо при обработке в 1/2 секунды для каждой ячейки.
Мне интересно, есть ли способ проверить, нажаты ли клавиши со стрелками и пропускают ли это событие SelectionChange
. Как только клавиша со стрелкой вверх, мне нужно будет выполнить SelectionChange
. Я не думаю, что мой код добавляет много значения моему вопросу, но вот простая версия моего класса ..
Option Explicit
Private WithEvents wrappedSheet As Worksheet
Private Sub Class_Initialize()
Set wrappedSheet = ActiveSheet
End Sub
Private Sub Class_Terminate()
Set wrappedSheet = Nothing
End Sub
Public Sub Init(xlWorksheet As Worksheet)
Set wrappedSheet = xlWorksheet
End Sub
Private Sub wrappedSheet_SelectionChange(ByVal Target As Range)
'If Arrow Keys aren't being held down....
'//Do some work that takes a second or two
'..
'..
End Sub