在 excel 中,我可以使用以下对话框将宏分配给图像:
这导致代码:
Private Sub MyShape_Click()
' ...
End Sub
但是,我需要将此宏分配给许多不同的图像。如何确定从单击处理程序中选择了哪个图像,以及如何获取对它的引用?
更新:
将相同的宏分配给所有图片并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()