将形状属性传递给_Click()子对象

时间:2018-06-20 22:14:27

标签: excel excel-vba parameter-passing vba

我甚至想弄清楚从哪里开始,所以朝着正确方向的任何推动都会有很大帮助。

我有一个地图电子表格,其中包含许多包含文本的不同矩形对象。当我单击矩形时,我想运行一个宏,并且希望该宏接收矩形中的文本作为参数。目的是使它显示一个userform以及一个listbox表,该表可以根据矩形中的文本进行自定义创建。我知道该怎么做,但是我不知道如何从形状对象中获取此属性。我想会是这样吗?

Sub Rectangle205_Click()
    facilityName = Me.Text
End Sub

Sub AMacro(By Ref Target)
    facilityName = Target.Text
End Sub

我对此一无所知,因此感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用下面的第一个代码将特定工作表中的每个形状链接到get_text代码:

Sub apply_script()

Dim sh As Shape

For Each sh In ActiveSheet.Shapes
    sh.OnAction = "get_text"
Next

End Sub

然后使用此代码获取形状的文本:

Sub get_text()
    MsgBox ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Caption
End Sub

仅编辑矩形:

Sub apply_script()

Dim sh As Shape

For Each sh In ActiveSheet.Shapes
    If sh.AutoShapeType = 1 Then
        sh.OnAction = "get_text"
    End If
Next

End Sub