VBA如何获取触发宏执行的形状上的文本内容
问题说明
现有如下绑定到包含文本RunMe的形状(例:名为Rounded Rectangle1的圆角矩形)的VBA代码:
Sub Caller_Text() MsgBox Application.Caller End Sub
运行上述代码时仅会返回形状的名称,需求为不获取形状名称,直接获取点击触发宏的形状上的文本内容。
解决方案
Application.Caller的返回值本身就是触发当前宏的形状名称,你只需要通过这个名称定位到对应的形状对象,再读取形状的文本属性即可拿到目标内容,修改后的代码如下:
Sub Caller_Text() Dim targetShape As Shape ' 根据Caller返回的名称定位被点击的形状 Set targetShape = ActiveSheet.Shapes(Application.Caller) ' 输出形状上的文本内容 MsgBox targetShape.TextFrame2.TextRange.Text End Sub
补充说明
- 若使用的是较早版本的Excel,可将读取文本的语句替换为
MsgBox targetShape.TextFrame.Characters.Text,效果完全一致 - 该写法同时兼容普通自选图形、表单控件按钮,同一个宏绑定到多个形状时,点击任意形状都能正确返回对应形状上的文本,无需为每个形状单独写宏
内容的提问来源于stack exchange,提问作者Waleed
相关产品推荐
相关产品推荐

