如何确定触发宏的图像

时间:2013-01-30 06:37:32

标签: excel-vba vba excel

在excel中,我可以使用此对话框为图像指定宏:

enter image description here

这导致代码:

Private Sub MyShape_Click()
    ' ...
End Sub

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

1 个答案:

答案 0 :(得分: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实现所需处理逻辑的所需行为:

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()是指定给图像/形状的宏。