2014-07-16 103 views
0

我需要僅爲自動着色文本的代碼。具體來說,我有乾淨的文本,然後是藍色和粗體的文本。我希望乾淨文本變成紅色,粗體和刪除線。這是我正在使用的代碼,整個單元格都是乾淨的,藍色的粗體文本變成紅色,粗體和直線。Excel VBA僅爲以前未着色的文本着色

Sub KeepBlueBold() 
    'keeps bluebold cell 
    Dim Cell As Range 
    For Each Cell In Selection 
    KeepBlueAddRed Cell 
    Next Cell 
End Sub 


Sub KeepBlueAddRed(Cell As Range) 
Dim iCh  As Integer 
For iCh = 1 To Len(Cell) 
    With Cell.Characters(iCh, 1) 
If .FOnt.ColorIndex <> 1 Then 
Text = Text & .Text 


End If 
End With 
Next iCh 
Cell.Value = Text 
Cell.Characters.FOnt.Strikethrough = True 
Cell.Characters.FOnt.Bold = True 
Cell.Characters.FOnt.ColorIndex = 3 
End Sub 
+0

您是否在任何給定的單元格中使用了混合格式? –

+0

查找和替換不適合? – pnuts

回答

0

下面的代碼應該工作,因爲你已經選擇了一個範圍。

Sub KeepBlueBold() 

    Dim c As Range 

    For Each c In Selection.Cells 
     If c.Font.ColorIndex = 1 Then 
      c.Font.ColorIndex = 3 
      c.Font.Bold = True 
      c.Font.Strikethrough = True 
     End If 
    Next 


End Sub 
+0

您是否可以解釋「因爲您已經選擇了一個範圍」您的意思是 – user2539359

+0

設置c =範圍(「a:AA」) – user2539359

+0

我的意思是說,因爲您沒有解釋您將使用哪個範圍,你應該手動選擇範圍(使用鼠標),然後運行宏。 但是,如果您嘗試更改的所有單元都在列A中,則可以輸入: Set c = Range(「A:A」) – Bira