Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 确定单击哪个命令按钮打开userform_Vba_Excel_Userform - Fatal编程技术网

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之前设置。