BeforeRightClick действует только на предварительно нажатую ячейку - PullRequest
0 голосов
/ 16 апреля 2019

Я очень новичок в Excel VBA, я искал много постов и сайтов, но не могу понять, почему ...

Моя цель: Щелкните правой кнопкой мыши по ячейке, откроется форма с текстовым полем, адрес выбранной ячейки отобразится в текстовом поле.

Я попробовал какой-то очень стандартный код ... вот так:

    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Cancel = True
    UserForm1.Show
    With UserForm1.TextBox1
     .Text = Target.Address
    End With
    End Sub

Вот ошибка (пошаговые результаты моих тестов)

1. I right click A1, the form opens, textbox displays null.
2. I right click D3, the form opens, NOW the textbox displays A1.
3. I right click E4, the form opens, NOW the textbox displays D3.

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

Пожалуйста, дайте некоторое представление о том, почему это происходит и как это исправить, спасибо, ребята!

1 Ответ

1 голос
/ 16 апреля 2019

Процедура события в порядке, target - это ячейка, по которой вы щелкаете правой кнопкой мыши.Однако вы показываете форму перед тем, как записать в нее адрес, и .show открывает форму modal , что означает, что код продолжается только после закрытия формы.Вы просто должны отменить это:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Cancel = True
    With UserForm1
        .TextBox1.Text = Target.Address
        .Show
    End With
end Sub
...