Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1208to1212
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

dynamisches Diagramm mit unabhängigen Zeilen

dynamisches Diagramm mit unabhängigen Zeilen
Werner
Hallo miteinander,
ich versuche mich gerade an einer Diagrammauswertung per VBA, die von den Zeilen unabhängig ist.
Prinzipiell klappt das auch schon mal ganz gut.
Ich habe einmal eine Beispieldatei hochgeladen:
https://www.herber.de/bbs/user/74338.xls
Alle wichtigen Infos habe ich in dieser Datei belassen.
So stehen im Tabellenblatt „Jahre“ die aufbereiteten Summenzüge der entsprechenden Jahre, Kostenstellen (KSt) und Baulastträger (BLT).
Diese Basistabelle ist hinsichtlich der Zeilenanzahl dynamisch und wird über entspr. Auswertungen befüllt.
Ebenso die in Spalte B und C befindlichen Feldnamen.
Die dynamische Tabelle wird im Tabellenblatt „Dia_dyn“ per Schaltfläche erstellt.
Hierzu liest das Makro den jeweils auszuwertenden BLT aus der Zelle „A2“ dieses Tabellenblattes aus und erstellt dadurch den zu betrachtenden Bereich.
Mit nachstehendem Programmcode:
Sub tglChart_click()
 Dim intCol As Integer
 Dim intRow As Integer
 Dim aktWb As Workbook
 Dim DiaQuelWs As Worksheet
 Dim AktWs As Worksheet
 Dim AktWsName As String
 Dim DiaQuelName As String
 Dim i As Long
 Dim leereZeile As Long
 Dim ch As Chart
 Dim AnzBLT As Integer
 Dim RangeStr As String
 Dim BLT As String
 
 Set aktWb = ActiveWorkbook
 Set DiaQuelWs = aktWb.Worksheets("Jahre")
 Set AktWs = aktWb.ActiveSheet
 AktWsName = AktWs.Name
 DiaQuelName = DiaQuelWs.Name & "!"
 
 BLT = AktWs.Cells(2, 1).Text
 With AktWs
 If .ChartObjects.Count > 0 Then
 .ChartObjects(1).Delete
 End If
 End With
 
 
 intRow = DiaQuelWs.Cells(65536, 2).End(xlUp).Row 'Die letzte benutze Reihe (ohne Formelinhalte) 
 intCol = DiaQuelWs.Cells(10, 256).End(xlToLeft).Column 'Die letzte benutze Spalte 
 With DiaQuelWs
 leereZeile = 14
 For i = leereZeile To 65536
 If .Cells(i, 2).Text = "" Then
 leereZeile = i - 1
 'tatsächlich leere Zeile ermitteln, ohne Formelinhalte 
 'Da im Bereich Formeln hinterlegt sind, die durch (xlUp) nicht als leere Zellen erkannt werden 
 Exit For
 End If
 Next i
 AnzBLT = 0
 RangeStr = ""
 For i = 1 To leereZeile 'solange den Rangebereich festlegen, wie der Begriff vorhanden ist 
 If .Cells(i + 13, 2).Text = BLT Then
 AnzBLT = AnzBLT + 1
 RangeStr = RangeStr & ",B" & i + 13 & ":C" & i + 13 & ",E" & i + 13 & ":N" & i + 13
 End If
 Next i
 RangeStr = Mid(RangeStr, 2) 'Rangebereich für die spätere, dyn. Zuordnung mit "SetSourceData" 
 End With
 
 
 
 Set ch = AktWs.ChartObjects.Add(101, 30, 700, 360).Chart
 With ch
 .ChartType = xlColumnClustered
 'dyn Bereich 
 .SetSourceData Source:=DiaQuelWs.Range(RangeStr), PlotBy:=xlColumn
 .Location Where:=xlLocationAsObject, Name:="Dia_dyn"
 End With
 
 With ActiveSheet.ChartObjects(1)
 With .Chart
 .HasLegend = True
 .Legend.Position = xlRight
 With .ChartArea 'Diagrammfläche 
 .Fill.Patterned Pattern:=7 'Muster 
 .Interior.PatternColorIndex = 2 'Musterfarbe 
 .Interior.ColorIndex = 2 'Hintergrundfarbe 
 End With
 With .PlotArea 'Zeichnungsfläche 
 .Interior.ColorIndex = 15 'Hintergrundfarbe 
 End With
 End With
 End With
 Set DiaQuelWs = Nothing
 'Excel_Funktionen_aktivieren (1) 
End Sub
[size=8]Code eingefügt mit [url=http://vbahtml.origo.ethz.ch] VBA in HTML 2.2.1[/url][/size]
habe ich die dynamische Erstellung des Diagramms soweit hinbekommen. Layout und Formatierungen erfolgen anschließend.
Was ich jedoch nicht hinbekomme ist die Aufnahme der Rubrikenachse „x“, sodass die Jahre, hier 2001 – 2011, ebenfalls mit übernommen werden.
Kann mir hier jemand den nötigen Gedankenanstoß
Gruß und danke für jeden Hinweis
Werner Brinkmann

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: dynamisches Diagramm mit unabhängigen Zeilen
11.04.2011 14:41:06
Rudi
Hallo,
    With ActiveSheet.ChartObjects(1)
With .Chart
.HasLegend = True
.Legend.Position = xlRight
With .ChartArea                       'Diagrammfläche
.Fill.Patterned Pattern:=7            'Muster
.Interior.PatternColorIndex = 2       'Musterfarbe
.Interior.ColorIndex = 2              'Hintergrundfarbe
End With
With .PlotArea                        'Zeichnungsfläche
.Interior.ColorIndex = 15             'Hintergrundfarbe
End With
.SeriesCollection(1).XValues = "=Jahre!R10C5:R10C14"  'X-Achse
End With
End With

Gruß
Rudi
das war's, was ich gesucht habe!
11.04.2011 14:54:56
Werner
Hallo Rudi,
das war's!
danke Dir.
Gruß
Werner
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige