BeforeRightClick 仅作用于之前点击的单元格

BeforeRightClick acts only on PREVIOUSLY clicked cell

我是 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

这里是bug(我一步一步的测试结果)

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.

文本框始终显示之前右击的单元格的地址。我需要文本框显示我刚刚右键单击的地址。

请提供一些关于为什么会发生这种情况以及如何纠正此问题的见解,谢谢大家!

事件例程没问题,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