2009-09-10 34 views
2

在下面的代碼中,我採用了一些輸入參數,無論是文本還是單元格,並將它們組合成一個使用我需要的格式的字符串。我需要使Task_Name變爲粗體,以及像「Lead:」這樣的文本。我知道你不能以粗體顯示變量,但我該怎麼做?我存儲該值的單元格最終將用於Word郵件合併。如何在VBA中設置文本/字符串的格式?

我需要格式化字符串的一部分。在下面的代碼中,我需要將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 

而且,我知道這不是最乾淨的代碼,因此,如果有如果有改進的其他建議,他們是最歡迎的。

謝謝!

回答

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 
+0

因此,如果在電子表格中,我的小區設置爲 = GENERATE_STAFFING_SECTION(.....)我該如何根據內容去格式化文本? – achinda99 2009-09-10 15:47:49

+0

+1:非常酷的部分顯示格式Sk93。我一直想知道部分是如何完成的。 – RBarryYoung 2009-09-10 15:53:18

+0

而沒有寫完整的代碼,你知道「任務名稱」將從1開始並滾到第一個換行,所以使用「Instr」來查找第一個換行字符。您現在將在上面的代碼中使用taskname的開始和結束點。 接下來,您知道「Lead:」是來自您已有的換行符,並且它的長度爲五個字符...您是下一個合作伙伴。 等等:) – Sk93 2009-09-10 15:54:07

相關問題