Отображать MsgBox при нажатии на ячейку - даже если ячейка уже выбрана - PullRequest
0 голосов
/ 24 августа 2018

Я хочу, чтобы при нажатии на ячейку A1 появлялось MsgBox. Я хочу, чтобы он появлялся, даже если A1 уже активен при нажатии:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Application.EnableEvents = False

  If Target.Row = 1 And Target.Column = 1 Then
    MsgBox ("message")
  End If

  Application.EnableEvents = True
End Sub

Этот код работает, только если ячейка A1 еще не выбрана, когда я нажимаю на нее. В настоящее время окно сообщения не появляется в этом случае.

Есть ли способ это исправить?

1 Ответ

0 голосов
/ 24 августа 2018

Ваш код использует Worksheet_SelectionChange, который срабатывает только при выборе другой ячейки (отсюда и название Selection Change).

В качестве альтернативы, если все в порядке, если ваша [неизвестная] цель достигнута с помощью дважды щелкните или щелкните правой кнопкой мыши , тогда есть другие события рабочего листа, которые помогут:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    MsgBox Target.Address & " was double clicked"
    Cancel = True 'don't edit cell
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    MsgBox Target.Address & " was right clicked"
    Cancel = True 'don't open context menu
End Sub

Обратите внимание, что код для этого события* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 10 * 10 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *} * * * * * * * * * * * * * * * * * * * *] с-что-то к-с-не »"-! "* API

  • Если это должен быть один щелчок, существуют «хитрые» способы сделать это, например, добавление события Click .Это не встроенная функция Excel VBA, и поэтому этот метод обычно не рекомендуется.

    Включает проверку сообщения WM_MOUSEMOVE при щелчке мыши по ячейке, что достигается путем вызова PeekMessage API внутри события Worksheet_SelectionChange .Дополнительная информация и примеры здесь .

Прозрачная командная кнопка

  • Для этого также может быть использован обходной способ с помощью Командная кнопка ActiveX без заголовка, для свойства BackStyle установлено значение frmBackStyleTransparent.

    image

Ни один из этих методов не был протестирован, и вам может потребоваться сделать какое-то необычное кодирование, чтобы заставить их работать.В зависимости от как часто будет нажата одна и та же ячейка, которая уже выбрана (и, следовательно, насколько эта функциональность для вас), вы можете просто переосмыслить макет вашего рабочего листа.

Например, вы можете добавить дополнительный столбец и сделать так, чтобы пользователь щелкнул ячейку рядом с ячейкой со значением для активации окна сообщения.


Дополнительная информация:

...