2016-07-25 5 views
0

特定の記号を表示するフォントがあります。標準/デフォルトフォントでシートに入力されます。私はこれらの文字を識別し、これらの文字のフォントを自分のシンボルフォントに変更することができますが、セル内に複数の識別されたシンボルがあるときに正しく動作するようにするには問題があります。Excelセルで複数のサブストリングのフォントを変更する

例えば、細胞については含まれていてもよい:

この値はXとY、およびZ

ある私は

X、Y、及びZのフォントを変更する必要があります

現在、vba経由で文字のフォントを変更する方法は次のとおりです。

Sub InsertFont(insertRange As Range, symbolText As String, symbolPosition As Integer) 
    Dim cellText As String 
    Dim newValue As String 
    cellText = insertRange.Value2 
    newValue = Replace(cellText, symbolText, SymbolDict.Item(symbolText), 1, 1) 
    insertRange.Value2 = newValue 
    With insertRange.Characters(symbolPosition, Len(SymbolDict.Item(symbolText))).Font 
     .Name = "MyFont" 
    End With 

End Sub 

oblemは各フォントの変更後に、残りのセルはデフォルトのフォントに戻ります!どのようにして、すべての変更に対してフォントの変更をスティックすることができますか?

最終結果:

この値は、コメントを経由して@TimWilliamsの提案ごとにXとYで、かつ☹

+0

何ですか'SymbolDict'では? – Comintern

+2

セルに「混合」書式が設定されたら、「文字」メソッド(挿入/削除)でセル内容をすべて変更する必要があります。あなたが見ているように、 'Value'を使うと文字単位の書式がリセットされます –

+0

@Comintern Keyは置き換えようとするテキストで、itemはそれを置き換える新しい値です。 – GisMofx

答えて

0

、ここで機能するソリューションがあります:

Sub InsertSymbol(insertRange As Range, symbolText As String, symbolPosition As Integer) 

    Dim cellText As String 
    Dim newValue As String 
    insertRange.Characters(symbolPosition, Len(symbolText)).Delete 
    insertRange.Characters(symbolPosition, 0).Insert SymbolDict.Item(symbolText) '2nd parameter 0 to not overwrite any characters 
    insertRange.Characters(symbolPosition, 1).Font.Name = "My Symbol Font Name" 

End Sub 
関連する問題