在标签内的图像捕获

我有一个用户窗体,其中包含一些图像的button。 然后我有三个空白标签,当我点击button/图像时,图像出现在第一个标签中。 然后,如果我点击另一个button/图像,第二个标签是图像,第三个是相同的。

36个button,标记为btn1至btn36三个空白标签名为capture1 capture2 capture3

我不确定是否需要发布任何其他信息。

我需要帮助编写代码(VBA)

从button获取图像的基本标签很简单:

Capture1.Picture = btn1.picture 

真正令人头疼的事实是,您无法将相同的代码块分配给VBA中的多个Button.Click事件。 不像在VB中的语法是:

 Sub MyRoutine(sender, <args>) Handles Button1.Click, Button2.Click... 

在VBA中,基本上需要36个不同的_Click例程,每个button1个。 设置一个模块级计数器来跟踪你想要引用的标签。

 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 

除了每个例程中的button名称之外,您需要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 

但是仍然会有36个调用CaptureImage子例程的_Click例程。