Das Archiv des Excel-Forums

860to864: makro verallgemeinern

Bild

Betrifft: makro verallgemeinern
von: humesit

Geschrieben am: 11.04.2007 14:24:04

hallo

ahbe ein makro aufgenommen, dass beim erstellen von diagrammen hilft. es ist in der persönlichenarbeitsmappe gespeichert.
leider sthet im code der dateiname ("Summary Report 1")aus der tabelle, aus der ich das aufgenommen habe.
wie kann ich denn das makro einfach auf eine beliebige tabelle beziehen aus der ich es aufgerufen habe?

ActiveChart.SetSourceData Source:=Sheets("Summary Report 1"). _
Range(ywerte.Address), PlotBy:=xlColumns

mfg christian

Bild

Betrifft: AW: makro verallgemeinern
von: Ceci
Geschrieben am: 11.04.2007 14:35:44
Hallo Christian,

versuche

ActiveChart.SetSourceData Source:=ActiveSheet _
Range(ywerte.Address), PlotBy:=xlColumns

mfg ceci

Bild

Betrifft: AW: makro verallgemeinern
von: humesit
Geschrieben am: 11.04.2007 14:53:09
funtkioniert leider nicht...

Bild

Betrifft: AW: makro verallgemeinern
von: humesit
Geschrieben am: 11.04.2007 14:55:58
also jetzt mit frage ist noch offen... mal schaun was passiert

Bild

Betrifft: AW: makro verallgemeinern
von: Ceci
Geschrieben am: 11.04.2007 14:57:53
Hallo,
ich weiß nicht ob du bemerkt hast, dass ich einen Punkt vergessen habe. Es muss so aussehen:

ActiveChart.SetSourceData Source:=Activesheet._
Range(ywerte.Address), PlotBy:=xlColumns

mfg Ceci

Bild

Betrifft: AW: makro verallgemeinern
von: humesit
Geschrieben am: 11.04.2007 15:18:08
ja hab ich bemerkt und gleich ausgebessert. leider hilft mir die online hilfe hier nicht weiter....:
hab nochmal den ganzen code (ohne die variablendekl) zugefügt.
Charts.Add
ActiveChart.ChartType = xlColumnClustered
'ywerte
ActiveChart.SetSourceData Source:=Sheets("Summary Report 1"). _
Range(ywerte.Address), PlotBy:=xlColumns
'xwerte
ActiveChart.SeriesCollection(1).XValues = xwerte
ActiveChart.Location Where:=xlLocationAsNewSheet

Bild

Betrifft: AW: makro verallgemeinern
von: Ceci
Geschrieben am: 12.04.2007 06:43:32
Hallo Christian,
ich habe hier mal meinen Code für die Diagrammerstellung für dich:

Sub Diagramm_Gesamt_erstellen()
Dim WSDia           As Worksheet
Dim chtChart        As Chart
Dim ChtChartArea    As ChartArea
Dim ChtAxis         As Axis
Dim Jahr            As String
Dim ch              As ChartObject
Set WSDia = Worksheets("Diagramm_Gesamt") 'Hier: set wsdia=ActivesSheet
'im Vorfeld ein evtl. vorhandenes Diagramm löschen!
On Error Resume Next
Application.DisplayAlerts = False
For Each ch In Sheets("Diagramm_Gesamt").ChartObjects
ch.Delete
Next ch
Application.DisplayAlerts = True
'Diagramm einfügen
WSDia.ChartObjects.Add Left:=0, Top:=265, Width:=355, Height:=170
WSDia.ChartObjects(1).Name = "Dia_Gesamt"
'Datentyp und Range bestimmen
Set chtChart = WSDia.ChartObjects(1).Chart
chtChart.ChartType = xlXYScatter
chtChart.SetSourceData Source:=WSDia.Range("B13:E13")
'Legende "Reihe 1" löschen
ActiveSheet.ChartObjects("Dia_Gesamt").Activate
ActiveChart.Legend.Select
Selection.Delete
'Farben im Diagramm
Set ChtChartArea = chtChart.ChartArea
With ChtChartArea
.Border.ColorIndex = RGB(192, 192, 192)
.Interior.Color = RGB(255, 255, 128)
.Font.Name = "Arial"
End With
Set ChtChartArea = Nothing
'Achsenformatierung
'ActiveSheet.ChartObjects.Activate
ActiveSheet.ChartObjects("Dia_Gesamt").Activate
ActiveChart.Axes(xlValue).Select
With ActiveChart.Axes(xlValue)
.MinimumScale = 1
.MaximumScale = 4
.MinorUnit = 0.1
.Crosses = xlCustom
.CrossesAt = 0
.ReversePlotOrder = True
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
'Achsenbeschriftung
Set ChtAxis = chtChart.Axes(xlCategory) 'y-Achse
On Error Resume Next
With ChtAxis
.HasTitle = True
.CategoryNames = WSDia.Range("B12:E12")
.HasMajorGridlines = False
.HasMinorGridlines = True
.AxisTitle.Text = "Quartale/ quarters"
.AxisTitle.Font.Bold = True
.AxisTitle.Font.Underline = True
.AxisTitle.Font.Size = "12"
End With
Set ChtAxis = chtChart.Axes(xlValue) 'x-Achse
With ChtAxis
.HasTitle = True
.AxisTitle.Text = "Benotung/ grading"
End With
End Sub


Bild

Betrifft: aufgenommenes makro verallgemeinern
von: humesit
Geschrieben am: 12.04.2007 14:31:48
würde den code nur ungern komplett umändern...ausserdem hab ich dieses problem bei mehren Makros, dass ich das makro gerne auf beliebige dateien anwenden würde?
active sheet ist laut meinem kompendium der richtige befehl, so wie du es erst vorgeschlagen hast,aber er funzt nicht...

Bild

Betrifft: AW: aufgenommenes makro verallgemeinern
von: Ceci
Geschrieben am: 13.04.2007 07:27:03
Sorry, dann kann ich dir auch nicht weiterhelfen, bei mir funzt es so...
mfg Ceci

Bild

Betrifft: AW: makro verallgemeinern
von: Gerd L
Geschrieben am: 14.04.2007 14:39:29
Hallo Christian,
das Problem mit dem Sheet ist, dass nach dem Chart.add das eingefügte Diagrammblatt das aktive Blatt
ist. Die beiden Range für die Achsenwerte wirst selbst hinkriegen. Oder?


Sub test2()
Dim sh As Object
Set sh = ActiveWorkbook.ActiveSheet
Charts.Add
With ActiveChart
.ChartType = xlColumnClustered
'ywerte
.SetSourceData Source:=sh.Range("A1:A4"), PlotBy:=xlColumns
'xwerte
.SeriesCollection(1).XValues = sh.Range("B1:B3")
.Location Where:=xlLocationAsNewSheet
End With
End Sub


Gruß
Gerd

 Bild