BeforeRightClick仅对之前单击的单元格起作用

时间:2019-04-16 13:57:19

标签: vba userform

我对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 个答案:

答案 0 :(得分:1)

事件例程正常,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