在vba中聚焦或单击后如何获取文本框名称

时间:2021-07-06 14:34:02

标签: excel vba

如何获取在 VBA 中获得焦点或点击的当前文本框(activex 控件)的名称?请注意,此文本框位于工作表上,而不是表单上。

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

Dim ActiveShape As Object

Private Sub TextBox1_GotFocus()
    Set ActiveShape = Me.TextBox1
End Sub

Private Sub TextBox2_GotFocus()
    Set ActiveShape = Me.TextBox2
End Sub

Sub Test()
    MsgBox "You are currently on, or have recently clicked on " & ActiveShape.Name
End Sub

我将 ActiveShape 作为 Module-Level 变量,这将在执行之间保存它。然后对于您的每个文本框,在其 _GotFocus 事件中放置一个脚本。此脚本会将最近交互的文本框保存到 ActiveShape 变量中。

如果需要,您可以将脚本放入每个文本框 _LostFocus 事件中,以将 ActiveShape 设置为 Nothing。如果您关心这种区别,这将确保 ActiveShape 只是当前活动的形状,而不是最近活动的形状。