vba - 如何在不调用 _Change 函数的情况下清除用户表单文本框?

标签 vba excel userform

我在 Excel 中有一个用户表单,其中包含仅用于数字数据的文本框。我想在检测到错误输入并给出错误消息时清除文本框,但我不想再次调用文本框的 _Change 函数,否则消息会弹出两次,因为我将文本更改为“”。我没有看到内置的 clear 功能.. 有没有更好的方法来做到这一点?

Private Sub txtbox1_Change()
    txt = userform.txtbox1.Value
    If Not IsNumeric(txt) Then
        disp = MsgBox("Please only enter numeric values.", vbOKCancel, "Entry Error")
        txtbox1.Text = ""
    End If
End Sub

最佳答案

实现此目的的一个简单方法是使用 _Exit()功能:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsNumeric(TextBox1.Value) Then
        MsgBox "Please only enter numeric values.", vbCritical, "Error"
End If
End Sub

一旦文本框失去焦点,就会触发。

关于vba - 如何在不调用 _Change 函数的情况下清除用户表单文本框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33651525/

相关文章:

excel - 在范围内查找匹配的单元格值,如果未找到匹配项,则粘贴单元格值

ms-access - Microsoft Access 2007 和 2010 : "Run-Time Error ' 42 9': ActiveX component can' t create object"

javascript - 使用 SheetJS 将 JSON 对象数组导出到 Excel

vba - 使用用户表单从当前打开的工作簿中检索外部工作簿的信息

vba - 暂停 VBA 循环以允许编辑工作表(无论有或没有用户窗体)

excel - 无法在 Excel VBA 用户窗体中设置多列列表框的选定属性

excel - 如何连接数百个单元格中的字符串?

vba - 如何从 VBA 中的查询检索值并将其分配为 Access 2016 中的变量

excel - 将 Visual Basic 编辑器的语言更改为英语

Excel自带函数: Compile error: Sub or Function not defined