一次测试多个文本框是否有任何空白
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
我想检查表单上的三个不同文本框(但不是全部),看是否有空白。相当于电子表格中的 "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