VBA 如果调用 Msgbox 的语句总是调用 msgbox
VBA If statement to call Msgbox always calls msgbox
我正在尝试使用 if 语句检查空白,return 如果有空白字段则使用 msgbox。如果没有空白字段,它 运行 是另一个代码块。然而,即使您填写了所有字段,msgbox 也总是 returned 而下一个代码块不会 运行。我是 VBA 的新手,并且用通用语言编写代码,所以任何建议都会有所帮助。
有问题的代码:
'Check required fields
If IsEmpty(C3) Then
MsgBox ("Fill out all required fields")
ElseIf IsEmpty(C7) = True Then
MsgBox ("Fill out all required fields")
ElseIf IsEmpty(C9) = True Then
MsgBox ("Fill out all required fields")
ElseIf IsEmpty(C11) = True Then
MsgBox ("Fill out all required fields")
ElseIf IsEmpty(C13) = True Then
MsgBox ("Fill out all required fields")
ElseIf IsEmpty(C17) = True Then
MsgBox ("Fill out all required fields")
Else
您将引用这样的范围:
If Len(Range("C3").Value) = 0 Then
MsgBox "Fill out all required fields"
但做这样的事情更短:
If Application.CountA(Range("C3,C7,C11,C13,C17")) < 5 Then
MsgBox "Fill out all required fields"
End if
C7
不是范围。 C9
、C11
、C13
或 C17
也不是
[C7]
是一个范围。然而,更好的写法是 ActiveSheet.Range("C7")
或 ActiveSheet.Cells(7,3)
然后你可以做一些漂亮的事情,比如使用错误处理和 SpecialCells
:
On Error GoTo NoErrors
Dim BlankFields AS Long
BlankFields = ActiveSheet.Range("C7,C9,C11,C13,C17").SpecialCells(xlCellTypeBlanks).Count
MsgBox "Fill out all required fields" & vbCrLf & BlankFields & "field(s) remaining"
NoErrors:
On Error GoTo 0
我正在尝试使用 if 语句检查空白,return 如果有空白字段则使用 msgbox。如果没有空白字段,它 运行 是另一个代码块。然而,即使您填写了所有字段,msgbox 也总是 returned 而下一个代码块不会 运行。我是 VBA 的新手,并且用通用语言编写代码,所以任何建议都会有所帮助。
有问题的代码:
'Check required fields
If IsEmpty(C3) Then
MsgBox ("Fill out all required fields")
ElseIf IsEmpty(C7) = True Then
MsgBox ("Fill out all required fields")
ElseIf IsEmpty(C9) = True Then
MsgBox ("Fill out all required fields")
ElseIf IsEmpty(C11) = True Then
MsgBox ("Fill out all required fields")
ElseIf IsEmpty(C13) = True Then
MsgBox ("Fill out all required fields")
ElseIf IsEmpty(C17) = True Then
MsgBox ("Fill out all required fields")
Else
您将引用这样的范围:
If Len(Range("C3").Value) = 0 Then
MsgBox "Fill out all required fields"
但做这样的事情更短:
If Application.CountA(Range("C3,C7,C11,C13,C17")) < 5 Then
MsgBox "Fill out all required fields"
End if
C7
不是范围。 C9
、C11
、C13
或 C17
[C7]
是一个范围。然而,更好的写法是 ActiveSheet.Range("C7")
或 ActiveSheet.Cells(7,3)
然后你可以做一些漂亮的事情,比如使用错误处理和 SpecialCells
:
On Error GoTo NoErrors
Dim BlankFields AS Long
BlankFields = ActiveSheet.Range("C7,C9,C11,C13,C17").SpecialCells(xlCellTypeBlanks).Count
MsgBox "Fill out all required fields" & vbCrLf & BlankFields & "field(s) remaining"
NoErrors:
On Error GoTo 0