VBA中空字符串的条件

时间:2016-06-06 17:14:35

标签: excel vba excel-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,如果是,那么我想去Last。

当我使用此代码时,我收到一条消息/编译错误“想要以不与之结束” 和 我不确定是否

If (Len1 & Len2) = 0 Then
       GoTo Last

这是一个正确的代码。 和我是否需要声明标签Last ??

4 个答案:

答案 0 :(得分:4)

你有很多方法可以做到这一点,如下所示:

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

答案 1 :(得分:2)

您可以使用Trim(strFile1 & vbNullString) = vbNullString检查字符串是否为空。

所以:

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

感谢@LordPeter

答案 2 :(得分:0)

is.empty对于VBA不存在,但第二种选择有效。

或者,你可以写:

(strFile1 & strFile2) = vbNullString

(strFile1 & strFile2) = ""

答案 3 :(得分:0)

另一种方式是:

If Len(strFile1 & strFile2) > 0 Then

我做了测试以确保未设置的字符串返回长度为0,这似乎就是这种情况。