Diagrammmakro nicht für andere Sheets kompatibel
10.11.2003 14:39:11
golem
ich habe da ein MAkro zur Erzeugung von Diagrammen erstellt(für mehrere Tabellenblätter), es funkt auch alles,bloß als ich das Makro in eine ander MAppe kopiert habe, erscheinen die erstellten Diagramme im anderem Format (Schriftgröße viel zu groß).
Kann das an einer Autoformatierung liegen (das Excel immer die Schrift des vorherigen Diagramms beibehält oder so?)?
der Code:
Sub AddGraphToEachWorksheet2()
Dim ChrtObjts As ChartObjects, ChrtObj As ChartObject
Dim MyChart As Chart, Ws As Worksheet
Dim i%
For i = 1 To 97
For Each Ws In Application.ActiveWorkbook.Worksheets '-- nicht notig
'Set Ws = Worksheets(i)
If Ws.CodeName = "Tabelle" & i Then ' fur die Sheets mit CodeName Tabelle1 bis Tabelle97
' Set MyChart = Charts.Add -- nicht notig
Set ChrtObjts = Ws.ChartObjects
Set ChrtObj = ChrtObjts.Add(0, 0, 100, 100)
Set MyChart = ChrtObj.Chart
With MyChart
' Charts.Add -- nicht nötig
.ChartType = xlColumnClustered
.SetSourceData Source:=Ws.Range("A26,A28:A40,C26,C28:C40,E26,E28:E40"), PlotBy:=xlColumns
.Location Where:=xlLocationAsObject, Name:=Ws.Name
.HasTitle = True
.ChartTitle.Characters.Text = "Sales"
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
.HasLegend = True
.Legend.Select
Selection.Position = xlTop
.HasDataTable = False
.SeriesCollection(2).Select
With Selection.Border
.ColorIndex = 6
.Weight = xlMedium
.LineStyle = xlContinuous
End With
Selection.Shadow = False
Selection.InvertIfNegative = False
Selection.Interior.ColorIndex = xlAutomatic
.SeriesCollection(2).ChartType = xlLine
.SeriesCollection(2).Select
With Selection.Border
.ColorIndex = 6
.Weight = xlThick
.LineStyle = xlContinuous
End With
With Selection
.MarkerBackgroundColorIndex = xlNone
.MarkerForegroundColorIndex = xlNone
.MarkerStyle = xlNone
.Smooth = False
.MarkerSize = 7
.Shadow = False
End With
With .ChartGroups(1) 'Balkendicke
.Overlap = 0
.GapWidth = 500
.HasSeriesLines = False
.VaryByCategories = False
End With
With ChrtObj 'Verschiebung
.Left = 2200
.Top = 295
.Height = 300
.Width = 700
End With
End With
End If
Next '-- nicht nötig
Next i%
End Sub
Außerdem wollte ich fragen wie ich den Bereich ändere, wenn man mehrere Quellen einfügen will (Für was steht das A26(=?),A28:A40 (=?))
das betrifft soweit ich weiß diese Zeile:
.SetSourceData Source:=Ws.Range("A26,A28:A40,C26,C28:C40,E26,E28:E40"), PlotBy:=xlColumns