2017-01-31 13 views
1

Ich habe ein ChartObject mit dem Namen "GFATMEN", die die Legende aktualisieren muss, wenn ich einige Formularsteuerungs-Kontrollkästchen in einer Kalkulationstabelle überprüfen. Sie werden verwendet, damit ich einige Daten auf der Karte anzeigen kann oder nicht, und ich brauche die Legende, um angezeigt zu werden oder nicht.Excel VBA bricht von Sub-Aufruf

Zum Beispiel habe ich diese Unter wenn eine Checkbox angeklickt wird:

Private Sub MerT_Click() 
Application.ScreenUpdating = False 
On Error Resume Next 
    ActiveSheet.ChartObjects("GFATMEN").Activate 
    If ActiveSheet.SeriesCollection.Count = 3 Then 
     With ActiveChart 
      If MerT = False Then 
       .SeriesCollection(3).Format.Line.Visible = msoFalse 
       Call show_legend 
      Else 
       .SeriesCollection(3).Format.Line.Visible = msoTrue 
       Call show_legend 
      End If 
     End With 
    End If 
Application.ScreenUpdating = True 
End Sub 

Sie ruft die anderen Unter show_legend, dass die Legende und formatiert sie neu erstellt:

Sub show_legend() 
    ActiveSheet.ChartObjects("GFATMEN").Activate 
    With ActiveChart 
     .HasLegend = False 
     .HasLegend = True 
     .Legend.Position = xlLegendPositionBottom 
     .Legend.Font.Name = "Tahoma" 
     .Legend.Font.Size = 10 
     .Legend.Font.ForeColor.Brightness = 0.25 
    End With 
    If MerT = False Then ActiveChart.Legend.LegendEntries.Item(3).Delete 
    If MerE = False Then ActiveChart.Legend.LegendEntries.Item(2).Delete 
    If MerI = False Then ActiveChart.Legend.LegendEntries.Item(1).Delete 
End Sub 

Das Problem ist, dass Der Code bricht IMMER vom show_legend-Sub und kehrt immer zum vorherigen Sub zurück, wenn die Zeile .Legend.Font.ForeColor.Brightness = 0.25 gelesen wird. Ich habe diese Zeile bereits auf einen vorherigen Abschnitt gesetzt, direkt nach der .HasLegend = True Zeile, und das Gleiche passiert.

Ich konnte keine Antwort finden, die meinem Problem entspricht. Vielen Dank.

+0

Die Kontrollkästchen Mere und Meri sind alle ähnlich U-Boote zu Mert. –

+1

Woher hast du diesen Code? Es gibt keine Font.ForeColor-Eigenschaft. – Rory

+0

Diese Codezeile gibt wahrscheinlich einen Fehler aus, der ignoriert wird, da Sie in der Subdatei "MerT_Click" auf "On Error Resume Next" klicken. – Socii

Antwort

0

Sie können unter so etwas wie der Code versuchen:

With .Chart.Legend 
    .Position = xlLegendPositionBottom 
    .Font.Size = 10 
    .Format.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(255, 0, 0) '<-- modify the font color 
    .Format.TextFrame2.TextRange.Font.Fill.ForeColor.Brightness = 0.25 '<-- modify the font brightness 
End With