2016-06-06 2 views
0

Как проверить, является ли строковая переменная пустой в vba?Условие для пустой строки в VBA

если:

Dim StrFile1 As String, StrFile2 As String 
Dim Text3 As String 
Dim Len1 as Integer, Len2 As Integer 

    With NewMail 
    Text3 = Cells(i, 3).Value 
    StrPath = Cells(i, 2).Value & Text3 
    Text = Cells(i, 1).Value 

    .Subject = 
    ' adds the data in column3 with space as subject 
    .From = 
    .To = Text 
    .BCC = "" 
    .TextBody = 

StrFile1 = Dir(StrPath & "*.txt") 
    Len1 = Len(StrFile1) 
    Do While Len(StrFile1) > 0 
    .AddAttachment StrPath & StrFile1 
    StrFile1 = Dir 
    Loop 

    StrFile2 = Dir(StrPath & "*.pdf") 
    Len2 = Len(StrFile2) 
    Do While Len(StrFile2) > 0 
    .AddAttachment StrPath & StrFile2 
    StrFile2 = Dir 
    Loop 

    If (Len1 & Len2) = 0 Then 
    GoTo Last 



    '.AddAttachment Text3 
    .Send 
End With 
i = i + 1 
Loop 

Last: 
End With 
i = i + 1 
Loop 

Теперь я хочу, чтобы проверить, если одновременно len1 и len2 равны 0, если да, то я хочу пойти в последний день.

Когда я использую этот код, я получаю сообщение/Ошибка компиляции «Хотите заканчиваться без с» и я не уверен, если

If (Len1 & Len2) = 0 Then 
     GoTo Last 

это правильный код. и Нужно ли объявлять ярлык Last ??

+0

Примечание: 'IsEmpty()' является функцией VBA, но не работает для пустых строк, я не думаю. (Попробуйте, 'Debug.Print IsEmpty (StrFile1)' возвращает 'FALSE') – BruceWayne

+1

Возможный дубликат [EXCEL VBA Проверьте, что запись пуста или нет« пробел »] (http://stackoverflow.com/questions/14108948/excel -vba-check-if-entry-is-empty-or-not-space) –

+0

Подождите, я думаю, что это может быть проблема [XY] (http://meta.stackexchange.com/questions/66377/what-is -The-ху-проблема). ** Почему ** вы проверяете пустую строку? Вы пытаетесь увидеть, есть ли файл PDF или TXT? Это то, что для проверки строки? – BruceWayne

ответ

2

У вас есть много способов сделать это, как показано ниже:

Dim StrFiles As String 
StrFiles = Trim(StrFile1 & StrFile2) 

If IsEmpty(StrFiles) Then 
If StrFiles = vbNullString Then 
If StrFiles = "" Then 
If StrFiles = Empty Then 
If Len(StrFiles) = 0 Then 

вы можете использовать + operator для проверки 2 строки пустые ссылки на код, потому что Len Function возвращает целое число, содержащее либо количество знаков в строке

If (Len1 + Len2) = 0 Then 
+0

Есть ли способ проверить, являются ли две строки пустыми одновременно? – Shank

+0

@ Вы можете использовать: 'If (Len1 + Len2) = 0 Then' –

+0

Любая идея, почему я получаю сообщение об ошибке« End with Without a with »? – Shank

2

Вы можете использовать Trim(strFile1 & vbNullString) = vbNullString, чтобы проверить, является ли строка пустой.

Итак:

If Trim(strFile1 & vbNullString) = vbNullString Then 
    Debug.print "Empty String!" 
End If 

Благодаря @LordPeter

+0

К сожалению, пропустил ваш ответ. Удаление шахты, которая также предложила использовать 'Trim'. +1 для использования 'vbNullString' над' '' '(' vbNullString' является указателем на пустую строку, '' '' бесполезно распределено 2 байта. –

0

is.empty не существует для VBA, но второй вариант работы.

В качестве альтернативы, вы можете написать:

(strFile1 & strFile2) = vbNullString

или

(strFile1 & strFile2) = ""

0

Еще один способ:

If Len(strFile1 & strFile2) > 0 Then 

Я сделал тест, чтобы убедиться, что строки, которые Арен 't set возвращает длину 0, которая, как представляется, имеет место.

+0

Как проверить (Len1 & Len2) = 0? – Shank

Смежные вопросы