vba:用户表单功能
Posted
技术标签:
【中文标题】vba:用户表单功能【英文标题】:vba: userform functions 【发布时间】:2011-07-01 13:31:44 【问题描述】:我有一个从用户窗体上的按钮激活的子程序。从点击开始的基本流程是
1) 根据用户输入运行我的子程序
2) 选择结果表
3) 显示我的结果
4) 卸载我的用户表单
我遇到了一个问题,因为我想尝试对用户输入值设置界限,如果用户输入超出范围的内容,则会弹出一个消息框,通知他们该范围。我已经能够通过使用 if/then 循环来完成这个简单的任务。用户退出消息框后,我希望将用户表单与原始用户输入一起显示,并允许用户更改他们的输入。但是目前在用户单击消息框上的“确定”后,我的点击子继续其过程并卸载我的用户表单并选择我的结果工作表。我可以在 msgbox 状态之后放置一个简单的一行代码来保留用户表单,而不是让用户重新输入他们的值吗?
编辑 - 我的代码的一般要点如下:
Private Sub CommandButton1_Click()
PropertySearch.Search
ActiveSheet.Name = "SearchResult"
Cells(1, 1).Select
Unload ILsearch
End Sub
Sub Search()
If (TextBox1 And TextBox2 <= 8) And (TextBox1 And TextBox2 > 0) Then
'
'Performs my desired function
'
Else: MsgBox ("Database only includes ionic liquids with a maximum of 8 carbons in cation")
End If
【问题讨论】:
你能把子程序的代码贴出来吗? 【参考方案1】:如果输入是否在范围内,我会将 Search 转换为返回 true 或 false 的函数:
Function Search() AS Boolean
If (TextBox1 And TextBox2 <= 8) And (TextBox1 And TextBox2 > 0) Then
Search = True
Else
Search = False
EndIf
End Function
如果输入不符合您的界限,您只需退出子:
Private Sub CommandButton1_Click()
If(Not PropertySearch.Search) Then
MsgBox("your error message here")
Exit Sub
EndIf
' rest of the routine
End Sub
【讨论】:
【参考方案2】:有大约一千零一种解决方法 - 问题是您希望表单具有什么行为?
您希望它在一定时间后自动关闭吗? 看看这个定时器的例子1
或查看 Application.Ontime
Application.OnTime Now + TimeValue("00:00:10"), "unloadForm"
其中“unloadForm”是普通模块中的子项
Sub unloadForm()
Unload ILsearch
End Sub
要添加关闭表单按钮吗?
Private Sub CommandButton1_Click ()
Unload Me
End Sub
您希望用户使用右上角的红色 X 手动关闭表单吗?只需删除带有Unload
的行
您是否要显示一个模式弹出窗口,该窗口会冻结 Excel 直到关闭,然后您的表单会被卸载?在卸载表单之前尝试添加MsgBox "Hello"
。
还有更多!
例如,我有几个使用键盘事件的表单。 Escape 可以清除所有字段并隐藏/卸载表单,而 Enter 执行相同的操作但也可以将值写入表中,Delete 仅清除活动控件而不隐藏表单,向上和向下箭头在表单中循环隐藏当前并显示上一个/下一个,而左右功能,如 tab/shift + tab。
【讨论】:
以上是关于vba:用户表单功能的主要内容,如果未能解决你的问题,请参考以下文章