在下面的代码中,我获取一些输入参数,文本或单元格,并使用我需要的格式将它们组合成一个字符串。我需要使Task_Name变为粗体,以及像“Lead:”这样的文本。我知道你不能用变量粗体制作文字,但我该怎么做呢?我存储该值的单元格最终用于Word邮件合并。
我需要格式化字符串的一部分。在下面的代码中,我需要将Task_Name,“Lead:”等全部加粗。
Function GENERATE_STAFFING_SECTION(Task_Name, Lead_By, Members, Instructions)
Dim tmpSection As String
If Len(Task_Name > 0) And Len(Lead_By) > 0 And Len(Members) > 0 And Len(Instructions) > 0 Then
tmpSection = vbLf _
& Task_Name _
& vbLf & "Lead : " & Lead_By _
& vbLf & "Ambassadors : " & Members _
& vbLf & "Instructions : " & Instructions _
& vbLf
Else
tmpSection = ""
End If
GENERATE_STAFFING_SECTION = tmpSection
End Function
此外,我知道这不是最干净的代码,所以如果有任何其他改进建议,我们非常欢迎。
谢谢!
答案 0 :(得分:5)
您不能直接向字符串添加任何内容以使单元格具有粗体字符。
将字符串写入单元格后,您需要返回并重新处理单元格。 例如:
With ActiveCell.Characters(Start:=11, Length:=6).Font
.Name = "Arial"
.FontStyle = "Bold"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
此代码段只会将单元格的一部分设置为粗体。
编辑:
此代码可用于实现上述内容并为您提供所需内容。 它可以写得更好,但应该让你知道你要写什么:
Public Sub FormatOuput()
Dim i As Integer
'Format Task_name
i = InStr(1, ActiveCell.Text, vbLf)
MakeBold 1, i
'Format 'Lead'
MakeBold i + 1, 4
'Format 'Ambassadors'
i = InStr(i + 1, ActiveCell.Text, vbLf)
MakeBold i+1, 11
'Format 'Instructions'
i = InStr(i + 1, ActiveCell.Text, vbLf)
MakeBold i+1, 10
End Sub
Public Sub MakeBold(startPos As Integer, charCount As Integer)
With ActiveCell.Characters(start:=startPos, length:=charCount).Font
.Name = "Arial"
.FontStyle = "Bold"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
End Sub