我很新vba excel。我正在尝试为vba excel中的报表格式化任务开发一些小工具。我知道如果我把下面的代码放入一个按钮,它会卸载我的表单,但我怎么能重写一个msgbox的按钮来卸载整个用户表单?如何覆盖msgbox按钮以卸载VBA中的用户窗体?
Unload UserForm1
我很新vba excel。我正在尝试为vba excel中的报表格式化任务开发一些小工具。我知道如果我把下面的代码放入一个按钮,它会卸载我的表单,但我怎么能重写一个msgbox的按钮来卸载整个用户表单?如何覆盖msgbox按钮以卸载VBA中的用户窗体?
Unload UserForm1
如果我理解你的问题正确的(并且与克里斯我不知道,我这样做),你知道,一个MsgBox可以返回一个值,你可以使用该值关闭您的形式?例如,第一个返回值,第二个没有:
Dim l As Long
l = MsgBox("What do you want to do?", vbOKCancel)
If l = vbCancel Then
Unload UserForm1
Else
MsgBox "You selected 'OK'"
End If
您可以使用返回值(L)来告诉叫MSGBOX卸载窗体的代码。
嗨Alan的按钮。感谢您的回复。当我尝试时,它会给两个按钮提供一个msgbox。 (确定并取消)当我点击确定按钮时,它不会卸载窗体,它落在代码中的Else语句中。但是当我点击取消按钮,它的作品。 :S –
是的,如果你读过上面的代码,那就是它打算做的。我给你说明了这个消息框如何可以有不同的按钮(取决于你传递的参数;在本例中是vbOkCancel),并且每个按钮都返回一个不同的值(在本例中为vbCancel或vbOK)。然后,您可以像我这里所做的那样使用If块来根据用户单击哪个按钮来选择要执行的操作。如果你只想要一个按钮,就可以创建参数vbOKOnly,但在这种情况下,你不需要If语句;只需在msgbox之后的下一行中卸载表单即可。 –
好吧然后。我使用'vbOKOnly',并在'If'和'Else'语句中写入'Unload UserForm1'。这解决了我的问题:) 在问我之前,我已经猜到MsgBox可能会像java的swing - JOptionPane一样被覆盖,但不知道如何,所以我认为这将是一个问题。感谢您的帮助 –
不完全确定你的意思。你的意思是你想通过点击一个按钮来关闭用户窗体? – Chris
是的。我希望我的程序完全关闭,当用户点击msgbox –