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:用户表单功能的主要内容,如果未能解决你的问题,请参考以下文章

Excel 崩溃,VBA 用户窗体无法保存

单击保存按钮后如何在用户窗体中添加依赖于另一个组合框的excel vba组合框而不影响清除数据功能

VBA 防止用户输入表单中出现空字段

使用 VBA:为用户窗体上的标签控件分配值

Excel VBA - 条件格式中的用户定义函数

VBA Excel中的用户定义函数不可访问?