Основы переноса изображения с кнопки на ярлык просты:
Capture1.Picture = btn1.picture
Настоящая головная боль возникает из-за того, что вы не можете назначить один и тот же фрагмент кода нескольким событиям Button.Click в VBA. Не так, как в 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
но вы все равно получите 36 подпрограмм _Click, которые вызывают подпрограмму CaptureImage.
person
Stewbob
schedule
08.04.2011