Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1684to1688
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ChartSpace Point Beschriftung löschen

ChartSpace Point Beschriftung löschen
16.04.2019 13:35:51
Wegmann
Hallo,
ich habe folgendes Problem.
Ich erstelle auf einer Userform ein ChartSpace (Punkte mit gerader Linie).
Diese sollen eine Beschriftung erhalten. Aber nicht alle..... Wenn ich manuell das aus der Userform beim ChartSpace mache, kann ich bei einen Punkt die Beschriftung löschen (visible=false). Das bekomme ich unter VBA aber nicht hin. Hier ein Auszug aus meinem Quellcode.
UserForm_Diagramm.ChartSpace1.Charts(0).SeriesCollection.Add
UserForm_Diagramm.ChartSpace1.Charts(0).SeriesCollection(0).SetData c.chDimXValues, c.chDataLiteral, merker_h
UserForm_Diagramm.ChartSpace1.Charts(0).SeriesCollection(0).SetData c.chDimYValues, c.chDataLiteral, merker_v
Set dlBubbleLabels = UserForm_Diagramm.ChartSpace1.Charts(0).SeriesCollection(0).DataLabelsCollection.Add
dlBubbleLabels.HasSeriesName = True
serForm_Diagramm.ChartSpace1.Charts(0).SeriesCollection(0).Caption = Bezeichnung
...
und dann weiß ich nicht weiter....
irgendwie so aber das geht nicht
dlBubbleLabels.Points(2).Delete
Besten Dank
Gruß
Andrew

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ChartSpace Point Beschriftung löschen
16.04.2019 13:48:26
Nepumuk
Hallo Andrew,
kannst du eine Beispielmappe hochladen und die Bedingung aufzeigen nachdem ein DataLabel angezeigt/gelöscht werden soll?
Gruß
Nepumuk
AW: ChartSpace Point Beschriftung löschen
16.04.2019 15:01:47
Wegmann
Hallo ,
ich habe die Datei als Beispiel hochgeladen
https://www.herber.de/bbs/user/129187.xlsm
Von diesem Körper möchte ich sehr viele vom VBA erzeugen. Da die Datenreihe eines Diagramms auf 255 begrenzt ist, wollte ich für das Beschriften des Körpers keine weitere verschwenden...
Gruß+Danke
Andrew
AW: ChartSpace Point Beschriftung löschen
16.04.2019 15:07:17
Nepumuk
Hallo Andrew,
wie kommst du auf die Begrenzung? Ich habe schon ChartSpace-Diagramme mit mehreren zehntausend Datenpunkten erzeugt.
Gruß
Nepumuk
Anzeige
AW: ChartSpace Point Beschriftung löschen
16.04.2019 15:10:53
Wegmann
Hey Nepumuk,
Datenpunkte ja, Datenreihen sollte bei 255 Schluss sein...
Gruß
Andrew
AW: ChartSpace Point Beschriftung löschen
16.04.2019 15:47:00
Nepumuk
Hallo Andrew,
ach so, ja das stimmt. Teste mal:
Option Explicit

Private Sub Diagramm_Neu_Erstellen()
    
    Dim objChart As ChChart
    Dim objSeries As ChSeries
    Dim objDataLabels As ChDataLabels
    
    With ChartSpace1
        Call .Clear
        Set objChart = .Charts.Add
    End With
    
    With objChart
        .Type = chChartTypeScatterLine
        .HasTitle = True
        
        With .Axes(chCategoryAxis)
            .HasMajorGridlines = False
            .Scaling.HasAutoMaximum = True
            .Scaling.HasAutoMinimum = True
            .HasTickLabels = False
            .MajorTickMarks = chTickMarkNone
        End With
        
        With .Axes(chValueAxis)
            .HasMajorGridlines = False
            .Scaling.HasAutoMaximum = True
            .Scaling.HasAutoMinimum = True
            .HasTickLabels = False
            .MajorTickMarks = chTickMarkNone
        End With
        
        Set objSeries = .SeriesCollection.Add
        
        With objSeries
            .Name = "Koerper1"
            Call .SetData(chDimXValues, chDataLiteral, _
                Application.Transpose(Worksheets("Tabelle1").Range("A1:A18").Value))
            Call .SetData(chDimYValues, chDataLiteral, _
                Application.Transpose(Worksheets("Tabelle1").Range("B1:B18").Value))
            Set objDataLabels = .DataLabelsCollection.Add
        End With
        
        With objDataLabels
            .HasBubbleSize = False
            .HasCategoryName = False
            .HasPercentage = False
            .HasSeriesName = False
            .HasValue = False
        End With
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: ChartSpace Point Beschriftung löschen
17.04.2019 07:57:06
Wegmann
Guten Morgen Nepumuk,
danke für die schenlle Antwort, leider haben wir uns da wohl missverstanden, wenn ich das richtig verstehe hast du in deinem Quellcode eine Überschrift zum gesamten Diagramm hinzugefügt.
Ich habe mal einen 2. Körper hinzugefügt.
Wie im Button "so soll es aussehen": Jeder Körper (Datenreihe) soll eine Beschriftung haben.
https://www.herber.de/bbs/user/129200.xlsm
Gruß+vielen Dank
Andrew
AW: ChartSpace Point Beschriftung löschen
17.04.2019 11:39:49
Nepumuk
Hallo Andrew,
so?
Private Sub Diagramm_Neu_Erstellen1()
    
    Dim objChart As ChChart
    Dim objSeries As ChSeries
    Dim objDataLabels As ChDataLabels
    
    With ChartSpace1
        Call .Clear
        Set objChart = .Charts.Add
    End With
    
    With objChart
        .Type = chChartTypeScatterLine
        .HasTitle = True
        .Title.Caption = "Koerper"
        
        With .Axes(chCategoryAxis)
            .HasMajorGridlines = False
            .Scaling.HasAutoMaximum = True
            .Scaling.HasAutoMinimum = True
            .HasTickLabels = False
            .MajorTickMarks = chTickMarkNone
        End With
        
        With .Axes(chValueAxis)
            .HasMajorGridlines = False
            .Scaling.HasAutoMaximum = True
            .Scaling.HasAutoMinimum = True
            .HasTickLabels = False
            .MajorTickMarks = chTickMarkNone
        End With
        
        Set objSeries = .SeriesCollection.Add
        
        With objSeries
            .Caption = "Koerper1"
            Call .SetData(chDimXValues, chDataLiteral, _
                Application.Transpose(Worksheets("Tabelle1").Range("A1:A18").Value))
            Call .SetData(chDimYValues, chDataLiteral, _
                Application.Transpose(Worksheets("Tabelle1").Range("B1:B18").Value))
            Set objDataLabels = .DataLabelsCollection.Add
        End With
        
        With objDataLabels
            .HasBubbleSize = False
            .HasCategoryName = False
            .HasPercentage = False
            .HasSeriesName = True
            .HasValue = False
        End With
        Set objSeries = .SeriesCollection.Add
        
        With objSeries
            .Caption = "Koerper2"
            Call .SetData(chDimXValues, chDataLiteral, _
                Application.Transpose(Worksheets("Tabelle1").Range("C1:C18").Value))
            Call .SetData(chDimYValues, chDataLiteral, _
                Application.Transpose(Worksheets("Tabelle1").Range("D1:D18").Value))
            Set objDataLabels = .DataLabelsCollection.Add
        End With
        
        With objDataLabels
            .HasBubbleSize = False
            .HasCategoryName = False
            .HasPercentage = False
            .HasSeriesName = True
            .HasValue = False
        End With
    End With
End Sub

Wenn nicht, dann lade mal ein Bild hoch wie es aussehen soll.
Gruß
Nepumuk
Anzeige
AW: ChartSpace Point Beschriftung löschen
17.04.2019 12:31:44
Wegmann
Hallo Nepumuk,
es soll so aussehen wie in Userform1 meiner hochgeladenenen Excel-Datei.
Also Pro Datenreihe eine Beschriftung, und nicht an jeder Ecke.
Ich habe auch ein Bild der Userform hochgeladen:
Userbild
LG+Danke
Andrew
AW: ChartSpace Point Beschriftung löschen
17.04.2019 15:34:53
Nepumuk
Hallo Andrew,
ich kann deine ChartSpaces nicht sehen da sie auf meinem Rechner nicht existieren.
Teste mal:
Private Sub Diagramm_Neu_Erstellen1()
    
    Dim objChart As ChChart
    Dim objSeries As ChSeries
    Dim objDataLabels As ChDataLabels
    Dim lngIndex As Long
    
    With ChartSpace1
        Call .Clear
        Set objChart = .Charts.Add
    End With
    
    With objChart
        .Type = chChartTypeScatterLine
        .HasTitle = True
        .Title.Caption = "Koerper"
        
        With .Axes(chCategoryAxis)
            .HasMajorGridlines = False
            .Scaling.HasAutoMinimum = True
            .Scaling.HasAutoMinimum = True
            .HasTickLabels = False
            .MajorTickMarks = chTickMarkNone
        End With
        
        With .Axes(chValueAxis)
            .HasMajorGridlines = False
            .Scaling.HasAutoMinimum = True
            .Scaling.HasAutoMinimum = True
            .HasTickLabels = False
            .MajorTickMarks = chTickMarkNone
        End With
        
        Set objSeries = .SeriesCollection.Add
        
        With objSeries
            .Caption = "Koerper1"
            Call .SetData(chDimXValues, chDataLiteral, _
                Application.Transpose(Worksheets("Tabelle1").Range("A1:A18").Value))
            Call .SetData(chDimYValues, chDataLiteral, _
                Application.Transpose(Worksheets("Tabelle1").Range("B1:B18").Value))
            Set objDataLabels = .DataLabelsCollection.Add
        End With
        
        With objDataLabels
            .HasBubbleSize = False
            .HasCategoryName = False
            .HasPercentage = False
            .HasSeriesName = True
            .HasValue = False
            For lngIndex = 0 To .Count - 1
                If lngIndex <> 12 Then .Item(lngIndex).Visible = False
            Next
        End With
        
        Set objSeries = .SeriesCollection.Add
        
        With objSeries
            .Caption = "Koerper2"
            Call .SetData(chDimXValues, chDataLiteral, _
                Application.Transpose(Worksheets("Tabelle1").Range("C1:C18").Value))
            Call .SetData(chDimYValues, chDataLiteral, _
                Application.Transpose(Worksheets("Tabelle1").Range("D1:D18").Value))
            Set objDataLabels = .DataLabelsCollection.Add
        End With
        
        With objDataLabels
            .Position = chLabelPositionTop
            .HasBubbleSize = False
            .HasCategoryName = False
            .HasPercentage = False
            .HasSeriesName = True
            .HasValue = False
            For lngIndex = 0 To .Count - 1
                If lngIndex <> 12 Then .Item(lngIndex).Visible = False
            Next
        End With
    End With
    
    Set objDataLabels = Nothing
    Set objSeries = Nothing
    Set objChart = Nothing
End Sub

Gruß
Nepumuk
Anzeige
AW: ChartSpace Point Beschriftung löschen
17.04.2019 15:48:24
Wegmann
Hallo Nepumuk,
ich bin zutiefst beeindruckt:-)))
Ich behaupte, das ich ganz gut VBA kann, habe mir aber einen Abgesucht und du in so kurzer Zeit....
Der entscheiden Code ist wohl
.Item(lngIndex).Visible = False
Ich habe das immer mit Points versucht anzusprechen....
Danke für deine tolle Hilfe
Gruß
Andrew

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige