2014-10-08 134 views
0

我正在製作一個在所有圖表標題中進行簡單替換的宏。它的工作原理非常好,但抑制所有格式:斜體,粗體,... 下面是代碼:VBA Excel:查找並替換圖表標題

Function trouverItalique(ByRef g As ChartObject) 
      Dim phrase As String 
     For i = 0 To Len(g.Chart.ChartTitle.Text) 
      If InStr(g.Chart.ChartTitle.Characters(i, 1).Font.FontStyle, "Italic") > 0 Then 
       phrase = phrase & g.Chart.ChartTitle.Characters(i, 1).Text 
      End If 
     Next 
     trouverItalique = phrase 
End Function 
Private Sub CommandButton1_Click() 
Dim char As ChartObject 
For Each s In ActiveWorkbook.Worksheets 
    For Each char In s.ChartObjects 
     If char.Chart.HasTitle Then 
      Dim phrase As String 
      'phrase = trouverItalique(char) 
      'char.Chart.ChartArea.AutoScaleFont = False 
      char.Chart.ChartTitle.Characters.Text = replace(char.Chart.ChartTitle.Characters.Text, TextBox1.Text, TextBox2.Text) 
      Dim index As Integer 
      'index = InStr(char.Chart.ChartTitle.Characters.Text, phrase) 
      'char.Chart.ChartTitle.Characters(index, Len(phrase)).Font.Italic = True 
     End If 
    Next 
    Next 
End Sub 

它僅適用於某些情況下,只爲保持斜體,我想保持大膽其他格式。你有沒有想法讓我的代碼適用於任何情況?如果沒有我的所有行程,我是否會錯過一個很酷的機制去做同樣的事情?

回答

0

試試這個:

Sub tester() 

    ReplaceTitle ActiveSheet.ChartObjects(1).Chart, "ghj", "fffffff" 

End Sub 

Private Sub ReplaceTitle(cht As Chart, ReplaceWhat As String, ReplaceWith As String) 
    Dim sTitle As String, pos 
    If cht.HasTitle Then 
     pos = InStr(cht.ChartTitle.Characters.Text, ReplaceWhat) 
     If pos > 0 Then 
      cht.ChartTitle.Characters(pos, Len(ReplaceWhat)).Text = ReplaceWith 
     End If 
    End If 
End Sub 
+0

謝謝了很多,我甚至沒有想到這樣的方法,它的工作原理。 – Uranne 2014-10-14 07:40:54