VBA Excel用户窗体。 如何确定哪个图像被点击
我有一个用10个ImageBox的10个图像的用户窗体。 我知道,我可以确定像这样被点击的图像:
Private Sub Image1_Click() MsgBox "Image 1 clicked!" End Sub
但是由于有10张图片,我必须重复上述代码的10倍吗?
Private Sub Image1_Click() MsgBox "Image 1 clicked!" End Sub Private Sub Image2_Click() MsgBox "Image 2 clicked!" End Sub Private Sub Image3_Click() MsgBox "Image 3 clicked!" End Sub Private Sub Image4_Click() MsgBox "Image 4 clicked!" End Sub etc
或者有一个更优雅和简洁的方法?
你需要使用事件沉没,所以在一个类模块中,称为cls_CustomImage
有以下几点
Private WithEvents customImage As Image Public Sub InitialiseCustomImage(imgToCusomise As Image) Set customImage = imgToCusomise End Sub Private Sub customImage_Click() MsgBox customImage.Name End Sub
然后在你的用户表单中打开如下
Public colCustomImages As Collection Private Sub UserForm_Initialize() Dim ctl As Control Dim clsCustomImage As cls_CustomImage Set colCustomImages = New Collection For Each ctl In Me.Controls If TypeName(ctl) = "Image" Then Set clsCustomImage = New cls_CustomImage clsCustomImage.InitialiseCustomImage ctl colCustomImages.Add clsCustomImage End If Next ctl End Sub