2016-06-20 3 views
0

Also ich Schleife durch jedes Diagramm mit dem folgenden Code:Streifen bestimmte Wort in VBA für jedes Diagramm

Sub LoopThroughCharts() 

Dim sht As Worksheet 
Dim CurrentSheet As Worksheet 
Dim cht As ChartObject 

Application.ScreenUpdating = False 
Application.EnableEvents = False 

Set CurrentSheet = ActiveSheet 

For Each sht In ActiveWorkbook.Worksheets 
    For Each cht In sht.ChartObjects 
    cht.Activate 

    'Do something with the chart... 
    ActiveChart.Legend.Select 
    Selection.Left = 108.499 
    Selection.Width = 405.5 
    Selection.Height = 36.248 
    Selection.Top = 201.85 
    Selection.Left = 63.499 
    Selection.Top = 330.85 
    ActiveChart.PlotArea.Select 
    Selection.Height = 246.69 
    Selection.Width = 445.028 

    Next cht 
Next sht 

CurrentSheet.Activate 
Application.EnableEvents = True 

Dies macht die jeweils eine bestimmte Größe Diagramm und ich dachte, dass ich den folgenden VBA-Code ändern kann abzuzustreifen das Wort "Test: aus Test: abc der Legende und dann die resultierende Legende wäre abc. Ich denke, dass ich den folgenden Code ändern kann, aber ich bin nicht sicher, wie man das macht. :

For i = ActiveChart.SeriesCollection.Count To 1 Step -1 
If ActiveChart.Legend(i)= "Test: *" Then 
ActiveChart.Legend(i) **what I think needs to be modified** 
End If 
Next i 

Antwort

1

Um ein bestimmtes Wort strippen, können Sie

  • das Präfix Ersetzen Sie die Funktion Replace()
  • die Sub-String mit der Funktion Nehmen Sie mit Mid()

Hier ist die Democode

Sub stripDemo() 
    Dim str As String 
    str = "Test: my legend" 
    Debug.Print Replace(str, "Test: ", "") 
    Debug.Print Mid(str, 7, Len(str) - 6) 
End Sub 

EDIT

Also, wenn der Code auf Diagramm angewendet wird, wird es:

For Each sht In ActiveWorkbook.Worksheets 
    For Each cht In sht.ChartObjects 
    cht.Activate 
    ' iterate the series collection 
    ' replace the prefixe "Tests: " with "" 
    For Each sr In ActiveChart.SeriesCollection 
     If Len(sr.Name) > 6 And Left(sr.Name, 6) = "Test: " Then 
     sr.Name = Replace(sr.Name, "Test: ", "") 
     End If 
    Next sr 
    Next cht 
Next sht 
+0

So wäre dies, ohne dass möglich sein, alle Legenden zu definieren, weil ich nicht in der Lage sein wollen, müssen hart Code all die verschiedenen Legenden. –

+0

Bitte überprüfen Sie das Update –

Verwandte Themen