如何使用Excel中的VBA宏使文本显示为粗体

时间:2014-01-03 13:08:02

标签: excel vba

我想发送一些包含员工信息的邮件,如下所示。

名字: ABC 姓氏: DEF 员工ID: 0000000

我所做的如下

olmailitem.body = "First Name: " & Cells(cell.row, "D").Value & vbNewLine & "Last Name: " _
& Cells(cell.row, "E").Value & vbNewLine & "Employee ID: " & Cells(cell.row, "F").Value & vbNewLine

现在,我的问题是如何在Bold中打印上面给出的First NameLast NameEmployee ID

2 个答案:

答案 0 :(得分:0)

正如Joubarc所说

您可能需要查看条件格式。

假设您在列B中有要查找的值,并且想要突出显示某个范围内的所有值,例如D4:F15。

选择范围D4:F15,制作新的格式规则,然后选择“使用公式确定要格式化的单元格”。输入= ISNUMBER(MATCH(D4; $ B:$ B))作为公式,并根据需要制作格式。请注意,公式中的D4必须是范围的第一个单元格。

如果您不需要更多,那么好处是您根本不需要宏,并且格式化也可以实时完成。

答案 1 :(得分:0)

我认为你让HTMLBody变得比实际更复杂。如果你不包含任何html标签,HTMLBody和Body几乎是一样的。

每当我连接一串字符串时,我喜欢将它们放在数组中,然后使用Join来构建字符串。它效率更高,但即使是小型程序,我认为它看起来更干净。在下面的示例中,我将所有员工的东西放入一个名为aFirstLine()的数组中,然后将其与所有元素之间的空格连接起来。然后我把它加上一个名为aBody()的数组中的所有其他行,我将它连接在一起,用HTML换行符分隔元素。

这是一个例子。

Sub Test()

    Dim olApp As Outlook.Application
    Dim olMail As Outlook.MailItem
    Dim aFirstLine(1 To 6) As String
    Dim aBody(1 To 20) As String
    Dim i As Long

    Set olApp = New Outlook.Application
    Set olMail = olApp.CreateItem(olMailItem)

    'Put all the employee pieces in an array with html codes
    aFirstLine(1) = "<b>First Name:</b>"
    aFirstLine(2) = "ABC"
    aFirstLine(3) = "<b>Last Name:</b>"
    aFirstLine(4) = "DEF"
    aFirstLine(5) = "<b>Employee ID</b>:"
    aFirstLine(6) = "0000000"

    'join the employee stuff into one string
    aBody(1) = Join(aFirstLine, Space(1))
    'this will create a blank line
    aBody(2) = "&nbsp;"
    'Create all the other lines
    For i = 3 To 20
        aBody(i) = "This is line " & i
    Next i

    'join the body array using the html line break as a separator
    With olMail
        .HTMLBody = Join(aBody, "<br />")
        .Display
    End With

End Sub

请注意,只有第一行包含html标记。无论我使用Body还是HTML Body,所有其他行的连接都完全相同。