2

以下のコードでは、テキストまたはセルのいずれかの入力パラメーターを取得し、それらを組み合わせて、必要なフォーマットを使用して1つの文字列を形成します。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

また、私はそれが最もクリーンなコードではないことを知っているので、それを改善するための他の提案があれば、それらは大歓迎です。

ありがとう!

4

1 に答える 1

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
于 2009-09-10T15:42:53.493 に答える