Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1564to1568
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

X-Achse formatieren mit VBA

X-Achse formatieren mit VBA
04.07.2017 16:01:42
Sven
Hallo zusammen,
ich habe eine Excel-Datei mit den Blättern "Daten" und "Diagramm". In den Zellen G7:G9 auf dem Blatt "Daten" habe ich Zeitwerte stehen, die ich zunächst mit einer Formel auf ganze Minuten gerundet habe. Diese drei Werte sollen als Minimum-Grenze, Maximum-Grenze und Hauptintervall der X-Achse des Diagramms auf dem Blatt "Diagramm" eingestellt werden.
Ausgelöst werden soll das Makro am besten, wenn sich der Wert in einer der Zellen G7:G9 ändert.
Nach Internet-Recherche habe ich eine Vorlage gefunden und diese angepasst, allerdings funktioniert der Code nicht:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Worksheets("Daten").Range("G7:G9")) Is Nothing Then Exit Sub
With Worksheets("Diagramm").ChartObjects("Diagramm 4").Chart.Axes(xlValue)
On Error Resume Next
.MinimumScale = Worksheets("Daten").Range("G7").Value
.MaximumScale = Worksheets("Daten").Range("G8").Value
.MajorUnit = Worksheets("Daten").Range("G9").Value
.MinimumScaleIsAuto = (Worksheets("Daten").Range("G7") = "")
.MaximumScaleIsAuto = (Worksheets("Daten").Range("G8") = "")
.MajorUnitIsAuto = (Worksheets("Daten").Range("G9") = "")
End With
End Sub
Kann jemand einem blutigen VBA-Anfänger auf die Sprünge helfen?
VG Sven

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: X-Achse formatieren mit VBA
04.07.2017 16:45:32
Beverly
Hi Sven,
da deine Zellen Formeln enthalten, darfst du nicht die Zellen G7:G9 überwachen, sondern musst dich auf die Zellen beziehen, welche die Formelergebnisse ändern.


AW: X-Achse formatieren mit VBA
05.07.2017 09:08:27
Sven
Moin Karin,
Die manuelle Eingabe des Zeitstempels erfolgt in der Zelle G3. Genauer gesagt kopiere ich den Zeitstempel in diese Zelle. Die Zellen G7 und G8 verarbeiten den dann so, dass das Diagramm immer ein 15 Minuten Fenster abbildet. Der Hauptintervall soll eine Minute sein, also steht in G9 der feste Wert "=1/1440".
Habe also in der zweiten Code-Zeile die Range auf "G3" geändert. Allerdings läuft das immer noch nicht:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Worksheets("Daten").Range("G3")) Is Nothing Then Exit Sub
With Worksheets("Diagramm").ChartObjects("Diagramm 4").Chart.Axes(xlValue)
On Error Resume Next
.MinimumScale = Worksheets("Daten").Range("G7").Value
.MaximumScale = Worksheets("Daten").Range("G8").Value
.MajorUnit = Worksheets("Daten").Range("G9").Value
.MinimumScaleIsAuto = (Worksheets("Daten").Range("G7") = "")
.MaximumScaleIsAuto = (Worksheets("Daten").Range("G8") = "")
.MajorUnitIsAuto = (Worksheets("Daten").Range("G9") = "")
End With
End Sub
Wo liegt/liegen meine Fehler? Danke vorab.
Anzeige
AW: X-Achse formatieren mit VBA
05.07.2017 09:23:49
Beverly
Hi,
und WAS GENAU läuft nicht? Du solltest auch mal On Error Resume Next weglassen, wenn du sehen willst, ob und wo der Code vielleicht hängen bleibt.


AW: X-Achse formatieren mit VBA
05.07.2017 10:09:44
Sven
Läuft nicht = wenn ich in Zelle G3 eine Änderung mache oder einen neuen Wert eingeben, wird die Skalierung der X-Achse angepasst nicht.
Habe weiter im Internet recherchiert und funktionsfähigen Code gefunden und meinen Bedürfnissen angepasst:
Sub x_Achse_skalieren()
ActiveSheet.ChartObjects("Diagramm 4").Activate
ActiveChart.ChartArea.Select
ActiveChart.Axes(xlCategory).Select
With ActiveChart.Axes(xlCategory)
.MaximumScale = Sheets("Daten").Range("G8")
.MinimumScale = Sheets("Daten").Range("G7")
.MinorUnitIsAuto = True
.MajorUnit = (1 / 1440)
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
ActiveWindow.Visible = False
Range("A1").Select
End Sub
Problem ist, dass das Makro nun manuell ausgeführt werden muss. Ich werde trotzdem nochmal deine Idee ausprobieren.
Anzeige
AW: X-Achse formatieren mit VBA
05.07.2017 10:33:06
Beverly
Du kannst deinen Ursprungscode problemlos verwenden, wenn du die fehlerhafte Zeile findest und eliminierst... ;-)
Den Code aus deinem letzten Beitrag würde ich - so wie er ist - sowieso nicht verwenden, denn in VBA kann man in 99% aller Fälle auf Activate/Select verzichten, außerdem sind einige Attribute Standard und müssen deshalb nicht gesetzt werden. Der Code ist einfach nur mit dem Makrorekorder aufgezeichnet und nicht bereinigt worden...


AW: X-Achse formatieren mit VBA
05.07.2017 11:40:35
Sven
Hi Karin,
der Ursprungscode funktioniert nun. Ich habe - wenn ich das richtig sehe - zwei Fehler gemacht: Ich hatte den Code offenbar ins falsche Fenster eingetragen. Ich habe ihn erst in das Fenster der Arbeitsmappe eingetragen und nun in das Codefenster "Tabelle1 (Daten)". Außerdem war im Ursprungscode die Y-Achse angesprochen worden.
So funktioniert es nun:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Worksheets("Daten").Range("G3")) Is Nothing Then Exit Sub
With Worksheets("Diagramm").ChartObjects("Diagramm 4").Chart.Axes(xlCategory)
On Error Resume Next
.MinimumScale = Worksheets("Daten").Range("G7").Value
.MaximumScale = Worksheets("Daten").Range("G8").Value
.MajorUnit = Worksheets("Daten").Range("G9").Value
.MinimumScaleIsAuto = (Worksheets("Daten").Range("G7") = "")
.MaximumScaleIsAuto = (Worksheets("Daten").Range("G8") = "")
.MajorUnitIsAuto = (Worksheets("Daten").Range("G9") = "")
End With
End Sub
Danke trotzdem für die Hilfe!
Anzeige
AW: X-Achse formatieren mit VBA
05.07.2017 13:58:01
Beverly
Ich würde es ohne On Error lösen, da dies unnötig ist:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("G3")) Is Nothing Then Exit Sub
With Worksheets("Diagramm").ChartObjects("Diagramm 4").Chart.Axes(xlCategory)
If Worksheets("Daten").Range("G7") = "" Then
.MinimumScaleIsAuto = True
Else
.MinimumScale = Worksheets("Daten").Range("G7")
End If
If Worksheets("Daten").Range("G8") = "" Then
.MaximumScaleIsAuto = True
Else
.MaximumScale = Worksheets("Daten").Range("G8")
End If
If Worksheets("Daten").Range("G9") = "" Then
.MajorUnitIsAuto = True
Else
.MajorUnit = Worksheets("Daten").Range("G9")
End If
End With
End Sub


Anzeige
AW: X-Achse formatieren mit VBA
07.07.2017 11:24:29
Sven
Hi nochmal,
wie ändere ich den Code so ab, dass die Änderungen nicht durch eine manuelle Eingabe, sondern durch eine Änderung des Zellenwerts (aus Formel) ausgeführt werden?
Ich habe bisher nur rausgefunden, dass man in diesem Falle das Worksheet_Calculate Ereignis braucht, allerdings funktioniert ein einfaches tauschen in der ersten Zeile nicht.
AW: X-Achse formatieren mit VBA
07.07.2017 13:27:21
Beverly
Hi,
das hatte ich doch bereits in meinem ersten Beitrag geschrieben: überwache die Zellen, die eine Änderung des Formelergebnisses auslösen...


AW: X-Achse formatieren mit VBA
05.07.2017 09:18:58
Sven
Moin Karin,
Die manuelle Eingabe des Zeitstempels erfolgt in der Zelle G3. Genauer gesagt kopiere ich den Zeitstempel in diese Zelle. Die Zellen G7 und G8 verarbeiten den dann so, dass das Diagramm immer ein 15 Minuten Fenster abbildet. Der Hauptintervall soll eine Minute sein, also steht in G9 der feste Wert "=1/1440".
Habe also in der zweiten Code-Zeile die Range auf "G3" geändert. Allerdings läuft das immer noch nicht:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Worksheets("Daten").Range("G3")) Is Nothing Then Exit Sub
With Worksheets("Diagramm").ChartObjects("Diagramm 4").Chart.Axes(xlValue)
On Error Resume Next
.MinimumScale = Worksheets("Daten").Range("G7").Value
.MaximumScale = Worksheets("Daten").Range("G8").Value
.MajorUnit = Worksheets("Daten").Range("G9").Value
.MinimumScaleIsAuto = (Worksheets("Daten").Range("G7") = "")
.MaximumScaleIsAuto = (Worksheets("Daten").Range("G8") = "")
.MajorUnitIsAuto = (Worksheets("Daten").Range("G9") = "")
End With
End Sub
Wo liegt/liegen meine Fehler? Danke vorab.
Anzeige

40 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige