一次测试多个文本框是否有任何空白

Test several text boxes at once for any blanks

我想检查表单上的三个不同文本框(但不是全部),看是否有空白。相当于电子表格中的 "If IsBlank,"。从我读过的内容来看,IsEmpty 似乎不能这样使用?我一直在玩 IsNull,但还没有找到允许它工作的正确语法。当然必须有一些简单的,甚至是标准的方法来做到这一点?也许还有其他一些我从未听说过的功能?

(我知道我可以使用 If Txtbx1.value = "" Or If... (etc.) —我正在寻找一种更短、更优雅的方式来做到这一点。)

谢谢!

考虑使用:

Sub dural()
    If Txtbx1.Value = "" Or Txtbx2.Value = "" Or Txtbx3.Value = "" Then
        MsgBox "at least one empty"
    End If
End Sub

匹配文本框数组的壮举。 IsError、VarType 和 TypeName

所有代码都在用户表单代码 sheet 中,并且是通过用户表单上的命令按钮 运行 三个文本框所在的位置。

在第一个代码中,Match 的结果被传递给 var(变体)变量并进一步求值。如果至少有一个没有值的文本框("" 或 vbNullString),var 将 return 第一个找到的空文本框的位置从 1 开始,即第一个是 1,第二个是2 等。不同于基于 0 的数组,即第一个元素为 0,第二个为 1 等

第二个代码是对第一个代码中研究的三个选项的演示。

第三个代码是一个 'bad' 代码,没有您可能正在寻找的变量。

Sub TextBoxFun()

    Dim vntTB As Variant    ' Text Box Array
    Dim var As Variant      ' Match Variant
    Dim strTB As String     ' Pass String
    Dim lngTB As Long       ' Pass Long

    ' Pass TextBoxes to Text Box Array.
    vntTB = Array(TextBox1, TextBox2, TextBox3)
    ' Either:
    var = Application.Match("", vntTB, 0)
    ' Or:
    'var = Application.Match(vbNullString, vntTB, 0)

                                            Debug.Print String(10, "'")
    Debug.Print "IsError(var)  = " & IsError(var)    ' True
    Debug.Print "VarType(var)  = " & VarType(var)    ' 10 or vbError
    Debug.Print "TypeName(var) = " & TypeName(var)   ' Error
                                            Debug.Print String(10, "'")

    ' Line of Code / vbNullString Found ? >>> '  True        False
    Debug.Print var                           '     1
    ' Depending on the first position of      '     2
    ' the found vbNullString or "".           '     3   Error 2042
    lngTB = IsError(var): Debug.Print lngTB   '     0           -1
    lngTB = VarType(var): Debug.Print lngTB   '     5           10
    'lngTB = TypeName(var): Debug.Print lngTB '  Nope         Nope
    ' TypeName returns always a string.
    strTB = IsError(var): Debug.Print strTB   ' False         True
    strTB = VarType(var): Debug.Print strTB   '     5           10
    strTB = TypeName(var): Debug.Print strTB  ' Double       Error

End Sub

Sub TextBoxFunConclusion()

    Dim vntTB As Variant    ' Text Box Array

    ' Pass TextBoxes to Text Box Array.
    vntTB = Array(TextBox1, TextBox2, TextBox3)

    If IsError(Application.Match("", vntTB, 0)) Then
        Debug.Print "No 'empty' text boxes (via IsError)."
    Else
        Debug.Print "At least one 'empty' text box (via IsError)."
    End If

    If VarType(Application.Match("", vntTB, 0)) = 10 Then
        Debug.Print "No 'empty' text boxes (via VarType)."
    Else
        Debug.Print "At least one 'empty' text box (via VarType)."
    End If

    If TypeName(Application.Match("", vntTB, 0)) = "Error" Then
        Debug.Print "No 'empty' text boxes (via TypeName)."
    Else
        Debug.Print "At least one 'empty' text box (via TypeName)."
    End If

End Sub

Sub TextBoxFunMyChoice()

    If IsError(Application.Match("", Array(TextBox1, TextBox2, TextBox3), 0)) _
      Then
        Debug.Print "No 'empty' text boxes (via IsError)."
    Else
        Debug.Print "At least one 'empty' text box (via IsError)."
    End If

End Sub



Private Sub CommandButton1_Click()
    TextBoxFun
End Sub

Private Sub CommandButton2_Click()
    TextBoxFunConclusion
End Sub

Private Sub CommandButton3_Click()
    TextBoxFunMyChoice
End Sub