Vba 确定单击哪个命令按钮打开userform
我在Vba 确定单击哪个命令按钮打开userform,vba,excel,userform,Vba,Excel,Userform,我在userform1上有两个命令按钮(cmd1和cmd2),单击每个按钮时显示相同的userform(userform2)。在initialize或load子菜单中,是否可以确定单击了userform1的命令按钮,从而以不同方式显示表单?我设想userform2上的initialize或load子模块中的代码具有以下框架: if (cmd1 was clicked) ' do stuff relating to 1 elseif (cmd2 was clicked) ' do stuff re
userform1
上有两个命令按钮(cmd1
和cmd2
),单击每个按钮时显示相同的userform(userform2
)。在initialize
或load
子菜单中,是否可以确定单击了userform1
的命令按钮,从而以不同方式显示表单?我设想userform2
上的initialize
或load
子模块中的代码具有以下框架:
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
的事件处理程序中,但是,如果可以使用上述方法,它将更加简单和干净。在UserForm1
中使用公共变量
,然后在UserForm2\u 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
您也可以在不使用公共变量的情况下执行此操作 我不会给出一个简单的例子,你可以在单元格或隐藏的表格中写一些东西,我只是直接传递想要的信息 这次单击的是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
当然,您必须隐藏用户所点击内容的文本(与字体或背景颜色相同…或者,如果您可以使用
激活
事件,则可以在userform2中设置Commandbutton变量,该变量由Userform1在显示userform2之前设置。