我想使用VB在邮件正文中添加多行。在打开和格式化邮件的代码下面:
With Workbooks("HEelo world.xlsx").Worksheets("Hello")
mail.To = .Range(.Range("F:F").Find("Address1").Address).Offset(0, 1)
mail.Cc = .Range(.Range("F:F").Find("Address2").Address).Offset(0, 1)
mail.Subject = .Range(.Range("F:F").Find("Object").Address).Offset(0, 1)
mail.Body = .Range(.Range("F:F").Find("Body").Address).Offset(0, 1)
mail.Body = ....
End With
添加多行的正确语法是什么?
答案 0 :(得分:1)
我发现这应该有效:
Dim strBody As String
strBody = .Range(.Range("B:B").Find("text1").Address).Offset(0, 1) & vbCrLf _
& .Range(.Range("B:B").Find("text2").Address).Offset(0, 1) & vbCrLf _
& .Range(.Range("B:B").Find("text3").Address).Offset(0, 1) & vbCrLf _
& .Range(.Range("B:B").Find("text4").Address).Offset(0, 1) & vbCrLf
mail.Body = strBody
答案 1 :(得分:1)
Dummies Guide to naming Excel ranges
使用我提供的链接了解如何修改范围以获得名称。您可以将范围作为vba中的命名引用进行定位。对于此示例,我们调用了包含邮件正文“BodyValue”值的单元格范围(例如.B4:B8)
Dim strBody As String
strBody = ""
For Each cl in Range("BodyValue").Cells
strBody = cl.Value & vbCrLf
Next
mail.Body = strBody
您也可以对电子邮件中使用的所有部分执行此操作,因此不要使用“偏移”,而是命名单元格或范围并引用VBA中的名称。如果您在工作表的任何部分添加行或列,这也可以避免发生错误,因为命名单元格的名称与工作表中的地址的更改无关。