如果单元格等于“”(如虚假空白),如何跳过我的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线来debugging它,它工作得很好,因为B36将总是返回一个非空单元格,并find正确的附件。

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

谢谢。

你可以在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 

另外一个select

 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 

您也可以检查string是否以\结尾

 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