如果单元格等于""如何跳过我的VBA中的一行? (如假空白)

时间:2017-03-20 02:59:46

标签: excel vba excel-vba

大家好日子。

我想知道我应该在这些代码中添加什么才能让它正常工作。这只是一个简单的代码,用于将工作表复制并粘贴到Outlook上并附加少量文件。我没有在这里复制所有内容,因为我发现问题正好在下面的代码中。

   StrAtt1 = ThisWorkbook.Path & "\PDF\" & Worksheets("PDF_Generator").Range("B36")
   StrAtt2 = ThisWorkbook.Path & "\PDF\" & Worksheets("PDF_Generator").Range("B39")
   StrAtt3 = ThisWorkbook.Path & "\PDF\" & Worksheets("PDF_Generator").Range("B40")
   .To = Worksheets("PDF_Generator").Range("B8")
   .CC = "Myself"
   .BCC = ""
   .Subject = Worksheets("PDF_Generator").Range("B38")
   .HTMLBody = RangetoHTML(rng)
   .attachments.Add StrAtt1
   .attachments.Add StrAtt2
   .attachments.Add StrAtt3

当B39或B40为空时出现问题,B39和B40本身是一个公式,具体取决于条件并可能返回到"" (假的空白) 我试图通过删除StrAtt2和StrAtt3行来调试它,它完全正常,因为B36将始终返回非空单元格并找到正确的附件。

我想知道我是否可以添加几行来让VBA明白我想跳过 StrAtt2和StrAtt3 如果单元格是""或空白

感谢。

3 个答案:

答案 0 :(得分:2)

您可以在If语句中放置您不想执行的语句:

If Worksheets("PDF_Generator").Range("B39").Value <> "" Then
    .attachments.Add StrAtt2
End If
If Worksheets("PDF_Generator").Range("B40").Value <> "" Then
    .attachments.Add StrAtt3
End If

答案 1 :(得分:0)

您还可以检查字符串是否以\结尾:

StrAtt2 = ThisWorkbook.Path & "\PDF\" & Worksheets("PDF_Generator").Range("B39")

If Right(StrAtt2) <> "\" Then .attachments.Add StrAtt2

或循环细胞:

Dim cell As Range
For Each cell in ThisWorkbook.Worksheets("PDF_Generator").Range("B36,B39,B40")
    If cell.Value2 > "" Then .attachments.Add ThisWorkbook.Path & "\PDF\" & cell.Value2
Next

答案 2 :(得分:0)

另一个选择

Dim StrArr
Dim lngRow As Long

With Worksheets("PDF_Generator")
    StrArr = Array(.Range("B36"), .Range("B39"), .Range("B40"))
    For lngRow = 0 To UBound(StrArr)
        If Len(StrArr(lngRow)) Then .attachments.Add ThisWorkbook.Path & "\PDF\" & StrArr(lngRow)
    Next
End With