Неожиданное поведение при перемещении мыши по диаграмме EXCEL

#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 этого не происходит …