Почему, если не IsEmpty, не отфильтровывает пустые строки?
что случилось с моим If
состоянии?
If Not IsEmpty(Wrkgps_L3) And Not IsEmpty(Wrkgps_L4) Then
Wrkgps_L3L4 = Wrkgps_L3 & "," & Wrkgps_L4
End If
на Not
условие, похоже, не работает. Код в If
утверждение выполняется, даже если оба Wrkgps_L3
и Wrkgps_L4
пустые строки.
обновление:
Wrkgps_L3
и Wrkgps_L4
- переменные, содержащие результаты, возвращаемые функцией. Я заметил это IsEmpty(Wrkgps_L3) = False
хотя Wrkgps_L3 = ""
. Мне пришлось переписать код на
If (Wrkgps_L3 <> "") And (Wrkgps_L4 <> "") Then
в любом случае, я все еще интересно узнать, почему IsEmpty
не работает с переменными с ""
?
2 ответов
В Visual Basic,Empty
и ""
(пустая строка) - это две разные вещи. Empty
является неинициализированным состоянием Variant
переменной, и IsEmpty
проверяет, является ли Variant
переменная имеет Empty
значение:
Dim x As Variant
If IsEmpty(x) Then
Debug.Print "x is empty"
End If
как вы заметили, вы должны сравнить с ""
при проверке, является ли String
переменная содержит пустую строку.
если переменные являются строками, вы также можете:
If Len(Wrkgps_L3) + Len(Wrkgps_L4) = 0 Then
' They're both empty string variables
Else
' One or the other contains at least one character
End If