#excel #vba
Вопрос:
У меня есть некоторое неожиданное поведение с MouseDown
событием EXCEL VBA. Я хочу нажать на серию и либо увеличить ее (если LEFT-SHIFT-ALT
нажата), либо переместить ( LEFT-CTRL-SHIFT
). Фрагмент кода выглядит следующим образом
Private Sub Chart_MouseMove(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long)
With ActiveChart
.GetChartElement x, y, ElementId, Arg1, Arg2 ' What did we click on ...?
If ElementId = xlSeries Then ' ... a data series
If Button = vbKeyLButton Then
If Shift = 3 Then ' SHIFT-CTRL so PAN
' do PAN stuff
ElseIf Shift = 5 Then ' SHIFT-ALT so ZOOM
' do ZOOM stuff
End If
End If
End If
End With
End Sub
Это LEFT-CTRL-SHIFT
работает, но LEFT-ALT-SHIFT
не работает, и EXCEL, похоже, хочет сделать что-то еще, например, развернуть всю диаграмму. Я добавил GetChartElement
заявление, чтобы попытаться избежать этого, но это не решило проблему. Буду признателен за любые мысли — спасибо!
Комментарии:
1. У меня были смешанные результаты с этими событиями мыши, связанными с диаграммами. Не могли бы вы использовать просто left shift без alt, или это резерв для чего-то другого? Я предполагаю, что вы используете событие mousedown для запуска процесса, а затем используете mous_move для продолжения (для увеличения панорамирования или масштабирования). Если mousedown распознает параметры сдвига, сохраните их как переменную модуля и ссылайтесь на нее вместо аргумента сдвига mousemove.
Ответ №1:
После еще одной игры вокруг LEFT-CTRL-ALT
работ, так что реализовали это. Все еще любопытно узнать, почему LEFT-SHIFT-ALT
этого не происходит …