1

在 excel 中,我可以使用以下对话框将宏分配给图像:

在此处输入图像描述

这导致代码:

Private Sub MyShape_Click()
    ' ...
End Sub

但是,我需要将此宏分配给许多不同的图像。如何确定从单击处理程序中选择了哪个图像,以及如何获取对它的引用?

4

1 回答 1

4

更新:

将相同的宏分配给所有图片并Application.Caller在宏中使用以确定调用它的图片/形状。在这种情况下(图片/形状)Application.Caller将是类型String

Private Sub GenericPicture_Click()
    Select Case Application.Caller
        Case "Picture 1"
            'do your work
            MsgBox "You got me"
        Case "Picture 2" 
            'do your work
        ...

    End Select 

    'Lets flip the picture that has been clicked
    With ActiveSheet.Shapes(Application.Caller)
        .Flip msoFlipHorizontal
    End With
End Sub

您还可以使用来自单独宏的参数来实现调用子程序的所需行为,该子程序实现所需的处理逻辑:

Sub Picture1_Click()
    DoWork 1
End Sub

Sub Picture2_Click()
    DoWork 2
End Sub

Sub DoWork(ByVal pic As Integer)
    'Implement your logic here
    MsgBox "Hi! I am picture" & pic
End Sub

您分配给图像/形状的宏在哪里Picture1_Click()和是。Picture2_Click()

于 2013-01-30T06:58:45.270 回答