2011-04-08 53 views
2

我有一个用户窗体,它包含一些有图像的按钮。然后,当我点击第一个标签中显示的图像的按钮/图像时,我会看到三个空白标签。然后,如果我点击另一个按钮/图像,第二个标签是图像,第三个是相同的。标记BTN1通称为捕捉器捕捉2 capture3 btn36 三个空白标签标签内的图像捕获

36个按钮

我不知道我是否需要发布的其他任何信息或没有。

我需要帮助写这个(VBA)代码

回答

3

从按钮获取图像标记的基础是直截了当:

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例程。