Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1936to1940
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

Chart formatieren....

Chart formatieren....
28.07.2023 12:43:50
Robert
Hallo Leute,

ich schäme mich schon fast...
Ich möchte das "Diagramm 1" formatieren, aber beide Ansätze schlagen fehl und ich seh sicher den Wald vor lauter Bäumen nicht....

        ActiveChart.ChartObjects("Diagramm 1").Activate
ActiveSheet.Chart("Diagramm 1").SetSourceData Source:=Range("A2:G912")
ActiveChart.Axes(XlAxisType.xlCategory).TickLabels.NumberFormat = "mm"
ActiveChart.Axes(XlAxisType.xlCategory).TickLabels.TickLabelSpacing = 60
ActiveChart.Axes(XlAxisType.xlCategory).TickLabels.AxisTitle.Text = "Minuten"



        With Charts("Diagramm 1")
.SetSourceData Source:=Range("A2:G1212")
.Axes.Item(xlCategory).TickLabels.NumberFormatLocal = "mm"
.Axes.Item(xlCategory).TickLabels.TickLabelSpacing = 60
.Axes.Item(xlCategory).TickLabels.AxisTitle.Text = "Minuten"
End With


Wer mag mir helfen?

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Chart formatieren....
01.08.2023 20:52:08
Pappawinni
Ein bisschen von meinem Beispiel ist ja angekommen, aber ich gehofft, dass auch das
With
und
Select Case
auf fruchtbaren Boden fällt.
Sieht das nicht besser aus ?



With ActiveSheet.ChartObjects("Diagramm 1").Chart
Select Case cb_times.Value
Case "10"
.SetSourceData Source:=Range("A2:G612")
.Axes(xlCategory).TickLabelSpacing = 30
.Axes(xlCategory).TickLabels.NumberFormat = "[mm]:ss"
.Axes(xlCategory).TickLabels.Orientation = xlHorizontal
.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Minuten : Sekunden"
Case "15"
.SetSourceData Source:=Range("A2:G912")
.Axes(xlCategory).TickLabelSpacing = 60
.Axes(xlCategory).TickLabels.NumberFormat = "[mm]"
.Axes(xlCategory).TickLabels.Orientation = xlHorizontal
.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Minuten"
Case "20"
.SetSourceData Source:=Range("A2:G1212")
.Axes(xlCategory).TickLabelSpacing = 60
.Axes(xlCategory).TickLabels.NumberFormat = "[mm]"
.Axes(xlCategory).TickLabels.Orientation = xlHorizontal
.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Minuten"
Case "30"
.SetSourceData Source:=Range("A2:G1812")
.Axes(xlCategory).TickLabelSpacing = 60
.Axes(xlCategory).TickLabels.NumberFormat = "[mm]"
.Axes(xlCategory).TickLabels.Orientation = xlHorizontal
.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Minuten"
Case "45"
.SetSourceData Source:=Range("A2:G2712")
.Axes(xlCategory).TickLabelSpacing = 60
.Axes(xlCategory).TickLabels.NumberFormat = "[mm]"
.Axes(xlCategory).TickLabels.Orientation = xlHorizontal
.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Minuten"
Case "60"
.SetSourceData Source:=Range("A2:G3612")
.Axes(xlCategory).TickLabelSpacing = 120
.Axes(xlCategory).TickLabels.NumberFormat = "[hh]:mm"
.Axes(xlCategory).TickLabels.Orientation = xlUpward
.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Stunden : Minuten"
Case Else ' case "90"
.SetSourceData Source:=Range("A2:G5412")
.Axes(xlCategory).TickLabelSpacing = 120
.Axes(xlCategory).TickLabels.NumberFormat = "[hh]:mm"
.Axes(xlCategory).TickLabels.Orientation = xlUpward
.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Stunden : Minuten"
End Select
End With


Anzeige
AW: Chart formatieren....
28.07.2023 14:30:12
robert
Habe genau was ich will noch mal als Makro aufgenommen und genau so in die If-Schleifen eingebaut

Der stop aber bei ActiveChart.Axes(xlCategory).Select

Laufzeitfehler "2147467259 (80004005)"
Die Methode "Select’ für das Objekt Axis" ist fehlgeschlagen


Versteh das nicht....

Private Sub cb_times_Change()

If cb_times.Value = "10" Then
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.SetSourceData Source:=Range("A2:G612")
ActiveChart.Axes(xlCategory).Select
ActiveChart.Axes(xlCategory).TickLabelSpacing = 30
Selection.TickLabels.NumberFormat = "mm:ss"
ActiveChart.Axes(xlCategory).AxisTitle.Select
ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Sekunden"


ElseIf cb_times.Value = "15" Then
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.SetSourceData Source:=Range("A2:G912")
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.Axes(xlCategory).Select
ActiveChart.Axes(xlCategory).TickLabels.NumberFormat = "mm"
ActiveChart.Axes(xlCategory).TickLabelSpacing = 60
ActiveChart.Axes(xlCategory).AxisTitle.Select
ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Minuten"

ElseIf cb_times.Value = "20" Then
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.SetSourceData Source:=Range("A2:G1212")
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.NumberFormat = "mm"
ActiveChart.Axes(xlCategory).TickLabelSpacing = 60
ActiveChart.Axes(xlCategory).AxisTitle.Select
ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Minuten"

ElseIf cb_times.Value = "30" Then
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.SetSourceData Source:=Range("A2:G1812")
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.NumberFormat = "mm"
ActiveChart.Axes(xlCategory).TickLabelSpacing = 60
ActiveChart.Axes(xlCategory).AxisTitle.Select
ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Minuten"

ElseIf cb_times.Value = "45" Then
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.SetSourceData Source:=Range("A2:G2712")
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.NumberFormat = "mm"
ActiveChart.Axes(xlCategory).TickLabelSpacing = 60
ActiveChart.Axes(xlCategory).AxisTitle.Select
ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Minuten"

ElseIf cb_times.Value = "60" Then
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.SetSourceData Source:=Range("A2:G3612")
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.NumberFormat = "hh:mm"
ActiveChart.Axes(xlCategory).AxisTitle.Select
ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Minuten : Sekunden"

ElseIf cb_times.Value = "90" Then
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.SetSourceData Source:=Range("A2:G5412")
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.NumberFormat = "hh:mm"
ActiveChart.Axes(xlCategory).AxisTitle.Select
ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Minuten : Sekunden"

End If

ActiveSheet.Range("O1").Select

End Sub




Anzeige
AW: Chart formatieren....
28.07.2023 17:58:54
onur
Lass mal Activate und Select weg (somit auch Selection) - das braucht nur der Makrorecorder
Sollte so klappen - Testen kann ich ja nicht, da du KEINE DATEI gepostet hast.
If cb_times.Value = "10" Then
ActiveChart.SetSourceData Source:=Range("A2:G612")
ActiveChart.Axes(xlCategory).TickLabelSpacing = 30
ActiveChart.Axes(xlCategory).TickLabels.NumberFormat = "mm:ss"
ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Sekunden"
ElseIf cb_times.Value = "15" Then
..........
AW: Chart formatieren....
31.07.2023 10:18:11
Robert
Hallo,

leider führt das nicht zum Erfolg.
Ich habe schon zig Varianten versucht aber nichts klapp so richtig.
Der Fehler tritt immer beim Umstellen des Dropdowns auf.

Ich häng es mal mit an.

Danke für die Hilfe

https://www.herber.de/bbs/user/162107.xlsm
Anzeige
AW: Chart formatieren....
31.07.2023 14:58:40
Pappawinni
Du hast da einen Blattschutz drauf, den müsstest du aufheben, damit eine Änderung erfolgen kann.
Am Anfang hab ich dann

Private Sub cb_times_Change()

ThisWorkbook.Worksheets("Uni-T").Unprotect
ThisWorkbook.Worksheets("Uni-T").ChartObjects("Chart 1").Activate

mit
Charts("Diagramm 1").Activate 

geht in deiner Beispieldatei nichts.

AW: Chart formatieren....
01.08.2023 08:55:14
Robert
Ahhh... Na klar... der Blattschutz.
Jetzt funktioniert es.
Dass ich darauf nicht selbst gekommen bin ...

Ich danke dir!
AW: Chart formatieren....
31.07.2023 22:45:53
Pappawinni
Also ich hab das jetzt mal ohne Select/Activate in dein Beispiel rein gebaut.
Funktioniert, aber wahrscheinlich ist das Ergebnis noch nicht ganz so, wie du dir das vorstellst.


Private Sub cb_times_Change()

Dim ws As Worksheet
Dim oChart As Chart

Set ws = ThisWorkbook.Worksheets("Uni-T")
Set oChart = ws.ChartObjects("Chart 1").Chart

ws.Unprotect

If cb_times.Value = "10" Then

oChart.SetSourceData Source:=Range("A2:G612")
oChart.Axes(xlCategory).TickLabelSpacing = 30
oChart.Axes(xlCategory).TickLabels.NumberFormat = "mm:ss"
oChart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Minuten : Sekunden"

ElseIf cb_times.Value = "15" Then

oChart.SetSourceData Source:=Range("A2:G912")
oChart.Axes(xlCategory).TickLabelSpacing = 60
oChart.Axes(xlCategory).TickLabels.NumberFormat = "mm"
oChart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Minuten"

ElseIf cb_times.Value = "20" Then

oChart.SetSourceData Source:=Range("A2:G1212")
oChart.Axes(xlCategory).TickLabelSpacing = 60
oChart.Axes(xlCategory).TickLabels.NumberFormat = "mm"
oChart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Minuten"

ElseIf cb_times.Value = "30" Then

oChart.SetSourceData Source:=Range("A2:G1812")
oChart.Axes(xlCategory).TickLabelSpacing = 60
oChart.Axes(xlCategory).TickLabels.NumberFormat = "mm"
oChart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Minuten"

ElseIf cb_times.Value = "45" Then

oChart.SetSourceData Source:=Range("A2:G2712")
oChart.Axes(xlCategory).TickLabelSpacing = 60
oChart.Axes(xlCategory).TickLabels.NumberFormat = "mm"
oChart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Minuten"

ElseIf cb_times.Value = "60" Then

oChart.SetSourceData Source:=Range("A2:G3612")
oChart.Axes(xlCategory).TickLabelSpacing = 60
oChart.Axes(xlCategory).TickLabels.NumberFormat = "hh:mm"
oChart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Minuten : Sekunden"

ElseIf cb_times.Value = "90" Then

oChart.SetSourceData Source:=Range("A2:G5412")
oChart.Axes(xlCategory).TickLabelSpacing = 60
oChart.Axes(xlCategory).TickLabels.NumberFormat = "hh:mm"
oChart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Minuten : Sekunden"

End If

ws.Range("O1").Select
ws.Protect

End Sub
Anzeige
AW: Chart formatieren....kürzer
31.07.2023 23:13:07
Pappawinni
Es scheint, dass du wesentlich nur die Quelldaten ändern willst, das ginge dann auch kürzer
z.B.:


Private Sub cb_times_Change()

Dim ws As Worksheet
Dim oChart As Chart

Set ws = ActiveSheet
Set oChart = ws.ChartObjects("Chart 1").Chart

ws.Unprotect

With oChart
.Axes(xlCategory).TickLabelSpacing = 60
.Axes(xlCategory).TickLabels.NumberFormat = "mm:ss"
.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Minuten : Sekunden"
End With

Select Case cb_times.Value
Case "10":
oChart.SetSourceData Source:=Range("A2:G612")
oChart.Axes(xlCategory).TickLabelSpacing = 30
Case "15":
oChart.SetSourceData Source:=Range("A2:G912")
Case "20":
oChart.SetSourceData Source:=Range("A2:G1212")
Case "30":
oChart.SetSourceData Source:=Range("A2:G1812")
Case "45":
oChart.SetSourceData Source:=Range("A2:G2712")
Case "60":
oChart.SetSourceData Source:=Range("A2:G3612")
Case "90"
oChart.SetSourceData Source:=Range("A2:G5412")
Case Else:
End Select

ws.Range("O1").Select
ws.Protect

End Sub

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige