Почему, если не 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