0

我有一个从用户窗体上的按钮激活的子程序。点击的基本程序是

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
4

2 回答 2

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
于 2011-07-01T13:47:17.853 回答
0

有大约一千零一种解决方法 - 问题是您希望表单具有什么行为?

你想让它在一定时间后自动关闭吗?看看这个定时器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。

于 2019-05-01T08:27:36.323 回答