首页 > 解决方案 > 在 vba 中聚焦或单击后如何获取文本框名称

问题描述

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

标签: excelvba

解决方案


尝试这样的事情:

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它作为一个模块级变量,这将在执行之间保存它。然后对于每个文本框,在它们的_GotFocus事件中放置一个脚本。此脚本会将最近交互的文本框保存到ActiveShape变量中。

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


推荐阅读