我对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.
文本框始终显示以前右键单击的单元格的地址。我需要文本框来显示我右键单击的地址。
谢谢,请提供一些有关为什么发生这种情况以及如何纠正这种情况的见解!
答案 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