我创建了一个输入框来获取输入的用户名但仍然使用取消按钮
Private Sub Form_Load()
fsUserName = UCase(InputBox("Please Enter your name.", "User Name", _
"dc"))
If fsUserName = "" Then
MsgBox "No name Entered." & Chr(13) & Chr(13) & _
"You must enter a name.", vbExclamation, "ERROR"
Form_Load
ElseIf VarType(fsUserName) = 0 Then 'If cancel clicked
cmdQuit_Click
End If
还有一种方法,当单击表单上的X按钮时,它执行cmdQuit_Click,这样如果用户单击命令按钮Quit或X,则运行Quit脚本。在退出脚本中有消息框和清理。
答案 0 :(得分:11)
您可以使用StrPtr()
检测是否点击了取消;
Dim fsUserName As String
fsUserName = InputBox("Please Enter your name.", "User Name", "dc")
If (StrPtr(fsUserName) = 0&) Then
MsgBox "Cancelled or X clicked"
ElseIf fsUserName = "" Then
MsgBox "No name Entered." & vbCr & "You must enter a name.", vbExclamation, "ERROR"
Else
fsUserName = UCase$(fsUserName)
MsgBox fsUserName
End If
如果您想在表单卸载时执行某些操作,则可以使用Form_Unload
事件或更好的Form_QueryUnload
事件,该事件在实际卸载之前触发。允许你取消它。
它还会告诉您表单卸载的原因(如果单击红色X,UnloadMode
将为0)
使用“Unload Me
”会引发两个事件。
编辑:在Form_Load
中调用Form_Load
会最终填满堆栈,最好使用循环来查找丢失的用户名。
答案 1 :(得分:2)
亚力克斯使用StrPtr的答案,我认为它的工作方式与广告一样好,但就更好的建议(IMO)是完全避免使用InputBox。您可以使用对话式样式,文本框和几个按钮轻松创建自己的,如果您愿意,也可以使用图标。
滚动自己可以提供完全的灵活性和可预测性,一旦拥有它,您就可以在以后的任何项目中使用它。
答案 2 :(得分:0)
Excel InputBox
和Application.InputBox
是不同的功能。
Sub GetValue2()
Dim Monthly As Variant
Monthly = Application.InputBox _
(Prompt:="Podaj wysokość miesięcznej wypłaty:", _
Type:=1)
If Monthly = False Then Exit Sub
MsgBox "Zarobki rocznie: " & Monthly * 12
End Sub
答案 3 :(得分:0)
试试这个......
Name = Application.InputBox("请输入姓名")
如果姓名="错误"然后
MsgBox"您在此处的留言"
退出子
结束如果