大家好日子。
我想知道我应该在这些代码中添加什么才能让它正常工作。这只是一个简单的代码,用于将工作表复制并粘贴到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 如果单元格是""或空白
感谢。
答案 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