Herbers Excel-Forum - das Archiv

Objekt formatieren mit Makro

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Label
Bild

Betrifft: Objekt formatieren mit Makro
von: Steffan
Geschrieben am: 03.12.2003 17:26:27
Hallo liebe Spezialisten. Ich möchte in meiner Tabelle über ein Makro ein Diagramm erzeugen und als Objekt in ein Tabellenblatt einfügen. Das klappt soweit ganz gut. Jetzt mein Problem. Die Darstellung des Objekts ist mir zu klein. Ich brauch das Diagramm deutlich gestreckt (von Spalte C bis AE und Zeile 1 bis 20), weil ich sonst die Achsenbeschriftung und die Werte nicht erkennen kann. Ich habe schon versucht, das Diagramm nach der Erstellung durch mein Makro durch ein zweites Makro zu formatieren, bekomme aber dann die Fehlermeldung: Laufzeitfehler 1004: Die ChartObjects-Eigenschaft des Worksheet-Objektes kann nicht zugeordnet werden. Kann ich Excel dazu überreden mir mein Diagramm von vornherein in der gewünschten Größe darzustellen?
Gruß und Danke
Steffan

Bild

Betrifft: AW: Objekt formatieren mit Makro
von: Jens Huthmann
Geschrieben am: 03.12.2003 18:54:04
Hallo Steffan,

ActiveSheet.Shapes(1).ScaleWidth 1.3, msoFalse, msoScaleFromTopLeft

hier für die 1,3-fache Breite. Leider ist es mir bisher nicht gelungen, das Diagramm als Activechart anzusprechen, sondern nur als "shape" mit der IndexNr. (Objekt Nr. x in dieser Tabelle)

Gruß
Jens Huthmann
EDV-Schulungen
www.jhuthmann.de
Bild

Betrifft: AW: Objekt formatieren mit Makro
von: Steffan
Geschrieben am: 03.12.2003 20:12:50
Hallo Jens, bin leider nicht gut in VBA! Ich habe die Zeile, die du mir geschrieben hast eingefügt. Das Resultat war ein Absturz von Excel!! Ich hänge mein Diagramm erzeugendes Makro hier mal an. Vielleicht wirst du daraus schlau und kannst mir weiterhelfen.
Gruß
Steffan



Sub Diagramm_Bartels()
' Diagramm_Bartels Makro
Sheets("Leistungsprüfung").Select
Selection.AutoFilter Field:=2, Criteria1:="Bartels"
Range("A2:A100").Select
ActiveWindow.ScrollRow = 1
Range("A2:A100,K2:K100").Select
Range("K2").Activate
ActiveWindow.ScrollRow = 1
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Leistungsprüfung").Range( _
"A2:A100,K2:K100"), PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:="Auswertung"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Diagramm Bartels"
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
With ActiveChart
.HasAxis(xlCategory, xlPrimary) = True
.HasAxis(xlValue, xlPrimary) = True
End With
ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlCategoryScale
ActiveChart.HasLegend = False
ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowValue, LegendKey:=False
ActiveChart.HasDataTable = False
ActiveChart.Axes(xlValue).Select
With ActiveChart.Axes(xlValue)
.MinimumScaleIsAuto = True
.MaximumScale = 10
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
End With
ActiveChart.Axes(xlCategory).Select
With ActiveChart.Axes(xlCategory)
.CrossesAt = 1
.TickLabelSpacing = 3
.TickMarkSpacing = 1
.AxisBetweenCategories = True
.ReversePlotOrder = False
End With
With ActiveChart.Axes(xlCategory)
.CrossesAt = 1
.TickLabelSpacing = 1
.TickMarkSpacing = 1
.AxisBetweenCategories = True
.ReversePlotOrder = False
End With
ActiveChart.ChartArea.Select
ActiveSheet.Shapes("Diagramm 29").ScaleWidth 1.49, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("Diagramm 29").IncrementLeft -45#
ActiveSheet.Shapes("Diagramm 29").IncrementTop 0.75
ActiveSheet.Shapes("Diagramm 29").ScaleWidth 1.09, msoFalse, _
msoScaleFromTopLeft
ActiveChart.SeriesCollection(1).DataLabels.Select
Selection.AutoScaleFont = True
With Selection.Font
.Name = "Arial"
.FontStyle = "Standard"
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Position = xlLabelPositionOutsideEnd
.Orientation = xlUpward
End With
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.AutoScaleFont = True
With Selection.TickLabels.Font
.Name = "Arial"
.FontStyle = "Standard"
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
Windows("Atemschutzleistungsprüfung.xls").ScrollColumn = 25
Windows("Atemschutzleistungsprüfung.xls").ScrollColumn = 10
ActiveChart.ChartArea.Select
ActiveSheet.Shapes("Diagramm 29").ScaleWidth 1.91, msoFalse, _
msoScaleFromTopLeft
Windows("Atemschutzleistungsprüfung.xls").ScrollColumn = 1
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.AutoScaleFont = True
With Selection.TickLabels.Font
.Name = "Arial"
.FontStyle = "Standard"
.Size = 6
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
ActiveChart.Axes(xlValue).Select
With ActiveChart.Axes(xlValue)
.MinimumScaleIsAuto = True
.MaximumScale = 7
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
End With
End Sub


Bild
Excel-Beispiele zum Thema " Objekt formatieren mit Makro"
UserForm-ComboBoxes als Collection-Objekte ansprechen Hintergrundfarbe eines UserForm-Image-Objekts festlegen
Tabellenblattzeile mit SpreadSheet-Objekt überlagern Spalten bedingt summieren und Zellen formatieren
Schriftart in Zeilen wechselweise fett/nicht-fett formatieren Tagesliste eines Monats nach Eingaben aktualisieren und formatieren
Tabelle gem. hinterlegten Zahlenformaten formatieren UserForm-TextBox-Wert formatieren