2015-01-19 3 views
3

У меня есть две командные кнопки() на userform1, при каждом нажатии на них отображается одна и та же пользовательская форма (userform2). В пределах initialize или load юга можно определить, какая кнопка команды была нажата на userform1 и поэтому показать форму по-разному? Я полагаю, код либо в initialize или load к югу от userform2 иметь следующий скелет:Определите, какая кнопка команды была нажата, чтобы открыть пользовательскую форму

if (cmd1 was clicked) 
' do stuff relating to 1 
elseif (cmd2 was clicked) 
' do stuff relating to 2 
else 
' error handling 
End if 

Соответствующий «stuff» может быть перемещен в обработчик событий для cmd1 и cmd2 однако, если метод, описанный выше, может будет использоваться намного проще и чище.

+0

В качестве альтернативы, если вы можете использовать событие «Активировать», вместо этого вы можете иметь переменную Commandbutton в userform2, установленную Userform1, прежде чем она отобразит userform2. – Rory

ответ

2

Используйте Public Variable в UserForm1, а затем проверьте его на UserForm2_Initialize Event.
Нечто подобное в UserForm1:

Public whatsclicked As String 
Private Sub CommandButton1_Click() 
    whatsclicked = "CommandButton1" 
    UserForm2.Show 
End Sub 

Private Sub CommandButton2_Click() 
    whatsclicked = "CommandButton2" 
    UserForm2.Show 
End Sub 

А потом в UserForm2:

Private Sub UserForm_Initialize() 
    Select Case UserForm1.whatsclicked 
    Case "CommandButton1": MsgBox "CommandButton1 loaded form." 
    Case "CommandButton2": MsgBox "CommandButton2 loaded form." 
    Case Else 'Do something else 
    End Select 
End Sub 
0

вы можете сделать это и без публичной переменной.

Я не буду показывать пример, где вы можете просто написать что-то в ячейке или скрытом листе, вместо этого я просто передаю нужную информацию напрямую.

этот раз whatsclicked это имя метки в userform2,

в UserForm1, перед вызовом userform2:

Private Sub CommandButton1_Click() 
load UserForm2 
with UserForm2 
    .whatsclicked.caption= "CommandButton1" 
    .Show 
end with 
End Sub 

Private Sub CommandButton2_Click() 
load UserForm2 
with UserForm2 
    .whatsclicked.caption= "CommandButton2" 
    .Show 
end with 
End Sub 

Конечно, вам придется скрывать текст whatsclicked пользователю (тот же цвет, что и шрифт или фон ...)

Смежные вопросы