2
我有一个用户窗体,它包含一些有图像的按钮。然后,当我点击第一个标签中显示的图像的按钮/图像时,我会看到三个空白标签。然后,如果我点击另一个按钮/图像,第二个标签是图像,第三个是相同的。标记BTN1通称为捕捉器捕捉2 capture3 btn36 三个空白标签标签内的图像捕获
36个按钮
我不知道我是否需要发布的其他任何信息或没有。
我需要帮助写这个(VBA)代码
我有一个用户窗体,它包含一些有图像的按钮。然后,当我点击第一个标签中显示的图像的按钮/图像时,我会看到三个空白标签。然后,如果我点击另一个按钮/图像,第二个标签是图像,第三个是相同的。标记BTN1通称为捕捉器捕捉2 capture3 btn36 三个空白标签标签内的图像捕获
36个按钮
我不知道我是否需要发布的其他任何信息或没有。
我需要帮助写这个(VBA)代码
从按钮获取图像标记的基础是直截了当:
Capture1.Picture = btn1.picture
真正的头痛来自于事实,你可以将相同的代码块分配给VBA中的多个Button.Click事件。不像在VB中的语法是:
Sub MyRoutine(sender, <args>) Handles Button1.Click, Button2.Click...
在VBA中,你基本上需要36个不同的_Click例程,每个按钮1个。设置模块级计数器以跟踪您想要参考的标签。
Dim counter As Integer
Private Sub UserForm_Activate()
counter = 1
End Sub
Private Sub btn1_Click()
If counter > 3 Then
counter = 1
End If
Controls("capture" & counter).Picture = btn1.Picture
counter = counter + 1
End Sub
除了每个例程中按钮的名称,您需要36个与此相同的例程。幸运的是,你可以通过剪切和粘贴来完成它。
您可以节省几行代码,如果你做这种方式:
Private Sub btn1_Click()
Call CaptureImage(btn1.Name)
End Sub
Private Sub btn2_Click()
Call CaptureImage(btn2.Name)
End Sub
.
.
.
Private Sub CaptureImage(ByVal btnName As String)
If counter > 3 Then
counter = 1
End If
Controls("capture" & counter).Picture = Controls(btnName).Picture
counter = counter + 1
End Sub
,但你仍然会结束与调用子程序CaptureImage 36个_Click例程。