- #1
F
falcon30
Bekanntes Mitglied
Themenersteller
- Dabei seit
- 21.06.2005
- Beiträge
- 94
- Reaktionspunkte
- 0
Hallo Zusammen,
ich habe eine Tabelle mit der per Makro ein Diagramm erzeugt wird.
Makro:
Tabelle:
Datum Anz. rot Anz. gelb Anz. grün Anz. nicht relevant Anz. nicht bewertet Anz. Maßnahmen
07.07.2005 0 0 0 0 0 0
08.08.2005 0 0 0 0 0 0
21.09.2005 6 4 0 1 0 5
25.10.2005 6 0 4 1 0 3
Nun möchte ich dass die Spalte mit Anz. Maßnahmen als Sekundärachse dargestellt wird. Die Sekundärachse soll als liniendiagramm erzeugt werden.
Könnt Ihr mir da helfen?
Vielen Dank im Voraus
Grüße
falcon30
ich habe eine Tabelle mit der per Makro ein Diagramm erzeugt wird.
Makro:
Code:
Function LinienChartErstellen(wb As Workbook, ws As Worksheet, r As Range, _
l_Start_zeile, l_Stop_zeile, _
l_zeile As Long, _
l_linkeSpalte As Long, _
l_HoeheInZeilen As Long, _
l_BreiteInSpalten As Long, _
s_AddTextUberschrift As String)
Dim ch As Chart, cho As ChartObject
->Dim l_z As Long, l_z_end As Long, l_c As Long, x As Long, s_tmp As String
->Chart erzeugen
Set ch = wb.Charts.Add
With ch
.ChartType = xlColumnStacked
.SetSourceData Source:=r, PlotBy:=xlColumns
.HasTitle = True
.ChartTitle.Text = s_AddTextUberschrift
.ChartTitle.AutoScaleFont = False
.ChartTitle.Font.Size = 12
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Text = Anzahl
.Axes(xlValue, xlPrimary).AxisTitle.AutoScaleFont = False
.Axes(xlValue, xlPrimary).AxisTitle.Font.Size = 12
.Axes(xlValue).TickLabels.NumberFormat = 0
.Axes(xlValue).TickLabels.AutoScaleFont = False
.Axes(xlValue).TickLabels.Font.Size = 12
If .Axes(xlValue).MaximumScale <= 5 Then
.Axes(xlValue).MinimumScaleIsAuto = True
.Axes(xlValue).MaximumScale = 5
.Axes(xlValue).MinorUnitIsAuto = True
.Axes(xlValue).MajorUnit = 1
ElseIf .Axes(xlValue).MaximumScale <= 10 Then
.Axes(xlValue).MinimumScaleIsAuto = True
.Axes(xlValue).MaximumScale = 10
.Axes(xlValue).MinorUnitIsAuto = True
.Axes(xlValue).MajorUnit = 2
ElseIf .Axes(xlValue).MaximumScale <= 16 Then
.Axes(xlValue).MinimumScaleIsAuto = True
.Axes(xlValue).MaximumScale = 16
.Axes(xlValue).MinorUnitIsAuto = True
.Axes(xlValue).MajorUnit = 2
ElseIf .Axes(xlValue).MaximumScale <= 20 Then
.Axes(xlValue).MinimumScaleIsAuto = True
.Axes(xlValue).MaximumScale = 20
.Axes(xlValue).MinorUnitIsAuto = True
.Axes(xlValue).MajorUnit = 4
ElseIf .Axes(xlValue).MaximumScale <= 50 Then
.Axes(xlValue).MinimumScaleIsAuto = True
.Axes(xlValue).MaximumScale = 50
.Axes(xlValue).MinorUnitIsAuto = True
.Axes(xlValue).MajorUnit = 10
End If
.Legend.AutoScaleFont = False
.Legend.Font.Size = 10
.Axes(xlCategory).TickLabels.AutoScaleFont = False
.Axes(xlCategory).TickLabels.Font.Size = 7
.Axes(xlCategory).TickLabels.Orientation = xlDownward
End With
ch.Location Where:=xlLocationAsObject, Name:=ws.Name
->Position des Charts setzen
Set cho = ws.ChartObjects(ws.ChartObjects.Count)
With cho
.Left = ws.Cells(l_Start_zeile, l_linkeSpalte).Left
.Top = ws.Cells(l_Start_zeile, l_linkeSpalte).Top
.Width = ws.Cells(l_Start_zeile, l_linkeSpalte + l_BreiteInSpalten).Left - _
ws.Cells(l_Start_zeile, l_linkeSpalte).Left
.Height = ws.Cells(l_Start_zeile + l_HoeheInZeilen, l_linkeSpalte).Top - _
ws.Cells(l_Start_zeile, l_linkeSpalte).Top
End With
->Diagramm größer nächste freie Zeile ?
If l_zeile < l_Start_zeile + l_HoeheInZeilen Then
l_zeile = l_Start_zeile + l_HoeheInZeilen
End If
->aufräumen
Set cho = Nothing: Set ch = Nothing
End Function
Tabelle:
Datum Anz. rot Anz. gelb Anz. grün Anz. nicht relevant Anz. nicht bewertet Anz. Maßnahmen
07.07.2005 0 0 0 0 0 0
08.08.2005 0 0 0 0 0 0
21.09.2005 6 4 0 1 0 5
25.10.2005 6 0 4 1 0 3
Nun möchte ich dass die Spalte mit Anz. Maßnahmen als Sekundärachse dargestellt wird. Die Sekundärachse soll als liniendiagramm erzeugt werden.
Könnt Ihr mir da helfen?
Vielen Dank im Voraus
Grüße
falcon30