2016-07-25 72 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 

該pr每個字體更改後,單元格的其餘部分將返回到默認字體!如何獲取字體更改以堅持所有更改?

最終結果是:

這個值是X和Y,及☹

+0

什麼'SymbolDict'中? – Comintern

+2

一旦在單元格中進行了「混合」格式化,您需要通過「字符」方法(插入/刪除)對單元格內容進行所有更改。正如你所看到的,如果你使用'Value',那麼任何每個字符的格式都會被重置。 –

+0

@Comintern Key是我正在替換的文本,item是用來替換它的新值。 – GisMofx

回答

0
通過評論

每@TimWilliams的建議,下面是工程解決方案:

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 
相關問題