Collapse column

Autor Thema: Office 2010: Beschriftung Diagramm basierend nur auf eingeblendeten Zellen  (Gelesen 313 mal)

Offline Joe94

  • Newbie
  • *
  • Beiträge: 1
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Mittelmäßig
  • Version [Office] : Office 2016
Hallo zusammen!

Ich habe ein Makro geschrieben zur Erzeugung eines Punktdiagramms, welches durch zwei Zellen beschriftet wird. Einmal dem ersten Buchstaben des Vor- und des Nachnamens.
Solange ich meine Tabelle nicht filtere passen die Beschriftungen, sobald ich jedoch dieses filtere zerschießt es die Beschriftungen. Ich habe auch die Hidden Eigenschaft versucht, komme dabei aber nicht zum gewünschten Ergebnis. Hätte jemand eine Idee, wie ich den richtigen Bezug zu den lediglich eingeblendeten Daten herstelle? Vielen Dank im Voraus!

Zunächst der "alte Code" der nur für die ungefilterte Tabelle funktioniert

'Erzeugung des Graphen und Zuweisung der Daten aus dem Tabellenblatt "Gehaltsdaten"

Sub ErzeugungGraph()

   
Dim data As Worksheet
Dim name As Range
Set data = ActiveWorkbook.Worksheets("Gehaltsdaten")

Application.ScreenUpdating = False
Worksheets("Gehaltsdaten").Activate
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatter
ActiveChart.SetSourceData Source:=data.Range("A3:AC3000")

ActiveChart.SeriesCollection.NewSeries

    With ActiveChart.SeriesCollection(1)
   
        .XValues = "=Gehaltsdaten!$G$3:$G$800"
        .Values = "=Gehaltsdaten!$AC$3:$AC$800"
        .name = "=Gehaltsdaten!$B$3:$B$800"
        .Trendlines.Add Type:=xlLinear
       
    End With
   
ActiveChart.location Where:=xlLocationAsObject, _
   name:=ThisWorkbook.Worksheets(4).name
   
'Formatierung des Graphen
   
    With ActiveChart
   
        .PlotArea.Format.Fill.ForeColor.ObjectThemeColor = msoThemeColorBackground1
        .HasLegend = False
        .Parent.Height = 600
        .Parent.Width = 1200
        .HasTitle = True
        .HasTitle = False
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Alter"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "JEK 35H"
        .Axes(xlValue).MinimumScale = 0
        .Axes(xlCategory).MaximumScale = 80
        .SeriesCollection(1).Format.Fill.ForeColor.RGB = rgbBlue
   
       
    End With
   
Worksheets(4).ChartObjects(1).Activate

With ActiveChart

    .Axes(xlValue).AxisTitle.Font.Size = 20
    .Axes(xlCategory).AxisTitle.Font.Size = 20
    .PlotArea.Interior.ColorIndex = 15
   
End With

'Aufrufen des Programms zur Beschriftung der Datenpunkte

      Call BeschriftungDiagramm
       
End Sub

'Beschriftet die Datenpunkte mit je dem ersten Buchstaben des Nach- und Vornamens

Sub BeschriftungDiagramm()

Dim lngPunkt As Long
Dim data As Worksheet


Set data = ActiveWorkbook.Worksheets("Gehaltsdaten")

                                   
   With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
      .ApplyDataLabels
     
      For lngPunkt = 1 To .Points.Count
     
         .Points(lngPunkt).DataLabel.Text = Left(data.Cells(lngPunkt + 2, 2), 1) & " " & Mid(data.Cells(lngPunkt + 2, 3), 2, 1)
     
     
      Next lngPunkt
     
   End With
                                   
End Sub

Sub LöschenDiagramm()
    ActiveSheet.ChartObjects(1).Delete
End Sub


Hier nun der Eigenversuch, der jedoch in der Form nicht funktioniert.


Sub XBeschriftungTest()

Dim lngPunkt As Long
Dim data As Worksheet
Dim zeileMax As Integer


Set data = ActiveWorkbook.Worksheets("Gehaltsdaten")
zeileMax = ActiveWorkbook.Worksheets("Gehaltsdaten").AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count
                                   
   With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
      .ApplyDataLabels
           
     
      For lngPunkt = 1 To zeileMax
     
        If data.Rows(lngPunkt).Hidden = True Then GoTo Ausgeblendet Else GoTo Eingeblendet
       
Eingeblendet:
         .Points(lngPunkt).DataLabel.Text = Left(data.Cells(lngPunkt + 2, 2), 1) & " " & Mid(data.Cells(lngPunkt + 2, 3), 2, 1)
               
     
     
Ausgeblendet:
      Next
     
     
     
   End With
                                   
End Sub

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum kann aus technischen Gründen leider nur bis maximal September 2019 in der Form betrieben werden.
Das neue Forum steht bereits unter https://forum.excel-inside.de uneingeschränkt zur Verfügung. Es wird empfohlen, neue Fragen direkt dort zu posten.

Bitte verwendet somit schnellstmöglich das neue Forum - Vielen Dank für euere Unterstützung