VBA技巧:让代码识别工作表中的形状

2024-05-14 10:38:02 浏览数 (2)

标签:VBA

Q:我在工作表中放置有一些形状,例如圆形、矩形等,我想当我在工作表中使用鼠标单击这些形状时能够根据单击的形状有不同的操作,该如何实现?我想在一个过程中实现,而不是每个形状关联不同的过程。

如下图1所示,当我使用鼠标单击上方的圆形时,会执行一个操作;单击下方的矩形时,会执行另一个操作,但这两个形状都关联相同的过程。

图1

A:在示例工作表中,将上方的圆形命名为“椭圆示例”,下方的矩形命名为“圆角矩形”。按Alt F11键,打开VBE编辑器,插入一个标准模块,在其中输入代码:

代码语言:javascript复制
Sub testShape()
 If Application.Caller = "椭圆示例" Then
   MsgBox "你单击了椭圆."
 ElseIf Application.Caller = "圆角矩形" Then
   MsgBox "你单击了圆角矩形."
 Else
   MsgBox "没有单击到任何形状."
 End If
End Sub

然后,返回工作表,在形状中单击鼠标右键,将其关联到宏过程testShape。当你单击工作表中的形状时,结果如下图2所示。

图2

你可以代替过程中MsgBox行的代码为你想要执行的操作代码。

0 人点赞