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
1284to1288
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
Min-, Max-Werte einer X-Achse anpassen
05.11.2012 19:35:45
Golem
Seid gegrüßt, Excel-Fachleute!
Ich benötige schon wieder Eure Hilfe.
Die Min-, Max-Werte der X-Achse eines Diagramms möchte ich dynamisch anpassen.
Dafür verwende ich einen Code, den ich aus dem Internet habe:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$3" Or Target.Address = "$C$4" Then
Call SetXMinMaxScale
End If
End Sub
Sub SetXMinMaxScale()
With ActiveSheet.ChartObjects(1).Chart.Axes(xlCategory)
.MinimumScale = ActiveSheet.Range("C3").Value
.MaximumScale = ActiveSheet.Range("C4").Value
End With
End Sub .
In der Zelle C3 ist der Wert "0".
In der Zelle C4 verändert sich der Wert von 1,6 bis 3,24.
Wenn ich in der Zelle C4 den Wert händisch eingebe, so passt sich der Max-Wert der X-Achse an.
Diese Zelle C4 ist aber mit einer anderen Zelle verknüpft, in der die Werte berechnet werden.
Bei Veränderung dieser Werte wird dann aber der Max-Wert der X-Achse nicht angepasst.
Für evtl. Tipps oder Anregungen schon mal besten Dank!
Golem

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Min-, Max-Werte einer X-Achse anpassen
05.11.2012 19:53:00
Beverly
Hi,
eine Formelveränderung löst kein Change-Ereignis aus. Überwache stattdessen die Zellen, aus denen sich die Formel berechnet.


AW: Min-, Max-Werte einer X-Achse anpassen
05.11.2012 21:05:24
Golem
Hallo Karin,
mit meinen geringen VBA-Kenntnissen habe ich meinen Code angepasst ( nur mit Hilfe von Beispielen ).
In meinem ersten Beispiel habe ich die Zelladressen übernommen. Jetzt habe ich im folgenden Bespiel
meine Zelladressen eingesetzt.
Mein geänderter Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("AX5")) Is Nothing Then
With ActiveSheet.ChartObjects(1).Chart
.Axes(xlCategory).MinimumScale = Range("AW4")
.Axes(xlCategory).MaximumScale = Range("AW5")
End With
End If
End Sub
Sub SetXMinMaxScale()
With ActiveSheet.ChartObjects(1).Chart.Axes(xlCategory)
.MinimumScale = ActiveSheet.Range("AW4").Value
.MaximumScale = ActiveSheet.Range("AW5").Value
End With
End Sub .
Wenn jetzt in der Zelle AX5 ein neuer Wert errechnet wird, so ändert sich der Zellwert AW4.
Aber der Max-Wert der X-Achse wird nicht angepasst.
Erst durch Sub/UserForm ausführen => Ausführen erfolgt eine Anpassung der X-Achse.
Was mache ich falsch?
Noch ein Hinweis!
Ich habe drei Diagramme übereinanderliegen.
Schöne Grüße Golem

Anzeige
AW: Min-, Max-Werte einer X-Achse anpassen
05.11.2012 21:51:11
Golem
Hallo Karin,
noch als Nachtrag der Gesamtcode vom Arbeitsblatt:
Option Explicit
Private Sub ScrollBar1_Change()
Range("AU21") = ScrollBar1
End Sub

Private Sub ScrollBar2_Change()
Range("AP9") = ScrollBar2
End Sub

Private Sub Worksheet_Calculate()
ScrollBar1.Min = IIf(Range("AU15") > 0, Range("AU15"), ScrollBar1.Max)
ScrollBar1.Max = IIf(Range("AU19") > 0, Range("AU19"), ScrollBar1.Min)
ScrollBar2.Min = IIf(Range("AJ9") > 0, Range("AJ9"), ScrollBar2.Max)
ScrollBar2.Max = IIf(Range("AM9") > 0, Range("AM9"), ScrollBar2.Min)
End Sub

Private Sub SpinButton1_Change()
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("AX5")) Is Nothing Then
With ActiveSheet.ChartObjects(1).Chart
.Axes(xlCategory).MinimumScale = Range("AW4")
.Axes(xlCategory).MaximumScale = Range("AW5")
End With
End If
End Sub
Sub SetXMinMaxScale()
With ActiveSheet.ChartObjects(1).Chart.Axes(xlCategory)
.MinimumScale = ActiveSheet.Range("AW4").Value
.MaximumScale = ActiveSheet.Range("AW5").Value
End With
End Sub Schöne Grüße Golem

Anzeige
AW: Min-, Max-Werte einer X-Achse anpassen
05.11.2012 21:52:46
Beverly
Hi,
wenn 3 Diagramme übereinader liegen wird vielleicht das falsche angepasst und du siehst das gar nicht? Da müsstest du schon mal deine Mappe hochladen, sonst kann man da nicht nachvollziehen was vor sich geht.


AW: Min-, Max-Werte einer X-Achse anpassen
06.11.2012 10:03:48
Golem
Hallo Karin,
erst einmal einen schönen Dank für Deine Bemühungen.
Die Datei ist ca. 1,3MB groß. Deshalb kann ich sie nicht auf den Server laden ( Begrenzung ca. 300 kB ).
Mit welcher Möglichkeit kann ich diese Datei Dir zur Verfügung stellen?
Schöne Grüße Golem

Anzeige
AW: Min-, Max-Werte einer X-Achse anpassen
06.11.2012 12:13:45
Golem
Hallo Karin,
mir ist eingefallen, dass wohl durch Calculate ein Change-Ereignis ausgelöst werden soll.
Ich habe den Gesamt-Code wie folgt geändert:
Option Explicit
Private Sub ScrollBar1_Change()
Range("AU21") = ScrollBar1
End Sub

Private Sub ScrollBar2_Change()
Range("AP9") = ScrollBar2
End Sub

Private Sub SpinButton1_Change()
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("AX5")) Is Nothing Then
With ActiveSheet.ChartObjects(1).Chart
.Axes(xlCategory).MinimumScale = Range("AW4")
.Axes(xlCategory).MaximumScale = Range("AW5")
End With
End If
End Sub

Private Sub Worksheet_Calculate()
With ActiveSheet.ChartObjects(1).Chart.Axes(xlCategory) .MinimumScale = ActiveSheet.Range("AW4").Value .MaximumScale = ActiveSheet.Range("AW5").Value End With End Sub So funktioniert jetzt die Max-Wert Anpassung einwandfrei.
Einen schönen Dank für Deine Hilfe!
Golem

Anzeige
AW: Min-, Max-Werte einer X-Achse anpassen
06.11.2012 14:49:30
Beverly
Hi,
den Code im Change-Ereignis kannst du weglassen, wenn du das Calculate Ereignis verwendest. Das Calculate Ereignis ist aber ein wenig sinnlos, weil es immer ausgelöst wird, wenn irgendein Formel-Ergebnis berechnet wird, also auch Eingaben in Ausgangszellen für andere Formeln erfolgen und nicht nur in den Ausgangszellen für die Formeln in AW4 und AW5.


AW: Min-, Max-Werte einer X-Achse anpassen
06.11.2012 16:26:39
Golem
Hallo Karin,
Du hast recht damit, dass das Change-Ereignis weggelassen werden kann.
Das ist jetzt die letzte Version des Gesamt-Codes:
Option Explicit
Private Sub ScrollBar1_Change()
Range("AU21") = ScrollBar1
End Sub

Private Sub ScrollBar2_Change()
Range("AP9") = ScrollBar2
End Sub

Private Sub SpinButton1_Change()
End Sub

Private Sub Worksheet_Calculate()
With ActiveSheet.ChartObjects(1).Chart.Axes(xlCategory)
.MinimumScale = ActiveSheet.Range("AW4").Value
.MaximumScale = ActiveSheet.Range("AW5").Value
ScrollBar1.Min = IIf(Range("AU15") > 0, Range("AU15"), ScrollBar1.Max)
ScrollBar1.Max = IIf(Range("AU19") > 0, Range("AU19"), ScrollBar1.Min)
ScrollBar2.Min = IIf(Range("AJ9") > 0, Range("AJ9"), ScrollBar2.Max)
ScrollBar2.Max = IIf(Range("AM9") > 0, Range("AM9"), ScrollBar2.Min)
End With
End Sub
Alles funktioniert einwandfrei ( auch die Min-, Max-Einstellung der beiden Schieberegler ).
Aufgrund meiner geringen Kenntnisse über VBA, arbeite ich bisher nach der Probiermethode. D.h. wenn etwas funktioniert,
dann bin ich damit erstmal zufrieden, ohne darüber die entsprechenden Kenntnisse zu besitzen.
Dein Einwand mit dem Calculate Ereignis ist nachvollziehbar. Solltest Du einen besseren Vorschlag haben,
so würde ich dies in meinem Gesamt-Code gerne einfügen.
Ich bin jetzt damit überfordert.
Auch würde ich Dir meine Datei zur Verfügung stellen, aber wegen der Größe ist das über den Server
nicht möglich ( welche sonstige Möglichkeit? ).
Schöne Grüße Golem

Anzeige
AW: Min-, Max-Werte einer X-Achse anpassen
06.11.2012 20:14:54
Beverly
Hi,
berechnen sich die Formeln in AW4 bzw. AW5 aus den Zellen AU21 bzw. AP9, also aus den Zellen, in die die beiden Scrollbars Werte eintragen? Sollen die Veränderungen am Diagramm bei Veränderung der Scrollbars vorgenommen werden? Ist letzteres der Fall, dann kannst du den Code durch das Change-Ereignis der Scrollbars aufrufen.


AW: Min-, Max-Werte einer X-Achse anpassen
06.11.2012 22:00:59
Golem
Hallo Karin,
entschuldige die Verwirrung, die ich angerichtet habe.
Die Zellen aus den Change-Ereignissen haben nichts mit Minimum- bzw. MaximumScale zu tun.
Diese werden nur für ScrolBar1 und 2 verwendet. AU21 und AP9 sind die Zellen, die Zeilen-Nr. anzeigen
( z.B. Schieberegler 1 mit dem Verschiebebereich Zeile 17 bis 3517 ).
Ich verwende 1x Calculate, um in den Zellen AW4 und AW5 ( für..Scale ), AU15 und AU19 ( für ..Bar1 ),
AJ9 und AM9 ( für ..Bar2 ) Ereignisse auszulösen. Alle v.g. Zellen sind mit anderen Zellen verknüpft, in denen
Formelwerte errechnet werden. Diese Formelwerte lösen kein Ereignis durch Change aus ( nur händisch ),
sondern diese Formelwerte können nur mit Calculate Ereignisse auslösen ( so habe ich es gelesen ).
So ist die Zelle AW4 mit der Zelle AX4 verknüpft ( Formelzelle ), die Zelle AW5 mit der Zelle AX5 ( Formelzelle ), die Zelle AU15.... usw. .
Ich konnte den Code Calculate noch vereinheitlichen:
Private Sub Worksheet_Calculate()
With ActiveSheet.ChartObjects(1).Chart.Axes(xlCategory)
.MinimumScale = IIf(Range("AW4") > 0, Range("AW4"), .MinimumScale)
.MaximumScale = IIf(Range("AW5") > 0, Range("AW5"), .MaximumScale)
ScrollBar1.Min = IIf(Range("AU15") > 0, Range("AU15"), ScrollBar1.Max)
ScrollBar1.Max = IIf(Range("AU19") > 0, Range("AU19"), ScrollBar1.Min)
ScrollBar2.Min = IIf(Range("AJ9") > 0, Range("AJ9"), ScrollBar2.Max)
ScrollBar2.Max = IIf(Range("AM9") > 0, Range("AM9"), ScrollBar2.Min)
End With
End Sub
Alles funktioniert einwandfrei.
Schöne Grüße Golem

Anzeige
AW: Min-, Max-Werte einer X-Achse anpassen
07.11.2012 15:57:15
Beverly
Hi,
wie ich schon geschrieben hatte: es müssen die Ursprungszellen überwacht werden, aus denen sich die Formelergebnisse berechnen - dann kann man das Change-Ereignis verwenden. Sollte die Skalierung der Achsen durch Veränderung der Scrollbalken erfolgen, dann kann man den Code für das Anpassen der Achsen dem Change-Ereignis der Scrollbalken zuweisen. Es ist in beiden Fällen kein Calculate-Ereignis erforderlich.


AW: Min-, Max-Werte einer X-Achse anpassen
07.11.2012 20:41:28
Golem
Hallo Karin,
jetzt geht mir ein Licht auf!
Ich habe die Zelle, in der die Formel steht, als den Ursprung angesehen. Jetzt habe ich erst verstanden, dass Du die Zellen davor
meinst.
Ich werde den gesamten Code nach Deinen Vorschlag ändern und danach wieder berichten.
Schöne Grüße Golem

Anzeige
AW: Min-, Max-Werte einer X-Achse anpassen
10.11.2012 19:50:15
Golem
Hallo Karin,
nach einigen Versuchen habe ich den Code hinbekommen.
Hier der Code:
Option Explicit
Private Sub SpinButton1_Change()
Range("U5") = SpinButton1
End Sub

Private Sub SpinButton2_Change()
Range("I5") = SpinButton2
End Sub
'Ereigniszellen für Min-, Max-Scale
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$I$5" Or Target.Address = "$U$5" Then
Call SetXMinMaxScale
End If
End Sub
'Wertezellen für Min-, Max-Scale
Sub SetXMinMaxScale()
With ActiveSheet.ChartObjects(1).Chart.Axes(xlCategory)
.MinimumScale = ActiveSheet.Range("AW4").Value
.MaximumScale = ActiveSheet.Range("AW5").Value
End With
End Sub
Der Code funktioniert einwandfrei.
Ich überwache die Zellen I5 und U5 der SpinnButtons.
Ich habe noch eine Frage zu meinen Schiebebalken.
So funktioniert der gesamte Code:
Option Explicit
Private Sub SpinButton1_Change()
Range("U5") = SpinButton1
End Sub

Private Sub SpinButton2_Change()
Range("I5") = SpinButton2
End Sub
'Ereigniszellen für Min-, Max-Scale
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$I$5" Or Target.Address = "$U$5" Then
Call SetXMinMaxScale
End If
End Sub
'Wertezellen für Min-, Max-Scale
Sub SetXMinMaxScale()
With ActiveSheet.ChartObjects(1).Chart.Axes(xlCategory)
.MinimumScale = ActiveSheet.Range("AW4").Value
.MaximumScale = ActiveSheet.Range("AW5").Value
End With
End Sub
Private Sub ScrollBar1_Change()
Range("AU21") = ScrollBar1
End Sub

Private Sub ScrollBar2_Change()
Range("AP9") = ScrollBar2
End Sub

Private Sub Worksheet_Calculate()
ScrollBar1.Min = IIf(Range("AU15") > 0, Range("AU15"), ScrollBar1.Max)
ScrollBar1.Max = IIf(Range("AU19") > 0, Range("AU19"), ScrollBar1.Min)
ScrollBar2.Min = IIf(Range("AJ9") > 0, Range("AJ9"), ScrollBar2.Max)
ScrollBar2.Max = IIf(Range("AM9") > 0, Range("AM9"), ScrollBar2.Min)
End Sub
Kann auch für beide Schiebebalken Change verwendet werden?
Ich überwache die Zellen AP9 und AU21.
Beispiel:
Option Explicit
Private Sub SpinButton1_Change()
Range("U5") = SpinButton1
End Sub

Private Sub SpinButton2_Change()
Range("I5") = SpinButton2
End Sub
'Ereigniszellen für Min-, Max-Scale
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$I$5" Or Target.Address = "$U$5" Then
Call SetXMinMaxScale
End If
End Sub
'Wertezellen für Min-, Max-Scale
Sub SetXMinMaxScale()
With ActiveSheet.ChartObjects(1).Chart.Axes(xlCategory)
.MinimumScale = ActiveSheet.Range("AW4").Value
.MaximumScale = ActiveSheet.Range("AW5").Value
End With
End Sub
Private Sub ScrollBar1_Change()
Range("AU21") = ScrollBar1
End Sub
'Ereigniszellen für Min-, Max-ScrollBar1
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$AU$21" Then
Call SetMinMax
End If
End Sub
'Wertezellen für Min-, Max-ScrollBar1
Sub SetMinMax()
With ActiveSheet.ChartObjects(1).Chart.Axes(xlCategory)
.Minimum = ActiveSheet.Range("AU15").Value
.Maximum = ActiveSheet.Range("AU19").Value
End With
End Sub
Private Sub ScrollBar2_Change()
Range("AP9") = ScrollBar2
End Sub
'Ereigniszellen für Min-, Max-ScrollBar2
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$AP$9" Then
Call SetMinMax
End If
End Sub
'Wertezellen für Min-, Max-ScrollBar2
Sub SetMinMax()
With ActiveSheet.ChartObjects(1).Chart.Axes(xlCategory)
.Minimum = ActiveSheet.Range("AJ9").Value
.Maximum = ActiveSheet.Range("AM99").Value
End With
End Sub Aber mit diesen Code gibt es Probleme wegen mehrmals Change.
Für Deine bisherigen Bemühen einen schönen Dank!
Schöne Grüße Golem

Anzeige
AW: Min-, Max-Werte einer X-Achse anpassen
11.11.2012 20:20:31
Golem
Hallo Karin,
nun habe ich es wohl hinbekommen.
Hier mein Code:
Option Explicit
Private Sub SpinButton1_Change()
Range("U5") = SpinButton1
End Sub

Private Sub SpinButton2_Change()
Range("I5") = SpinButton2
End Sub

Private Sub ScrollBar1_Change()
Range("AU21") = ScrollBar1
End Sub

Private Sub ScrollBar2_Change()
Range("AP9") = ScrollBar2
End Sub
'Ereigniszellen für Min-, Max-Scale und Min-, Max-ScrollBar1 und 2
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$I$5" Or Target.Address = "$U$5" Then
Call SetXMinMaxScale
ElseIf Target.Address = "$AU$21" Then
Call SetMinMaxScrollBar1
ElseIf Target.Address = "$AP$9" Then
Call SetMinMaxScrollBar2
End If
End Sub
'Wertezellen für Min-, Max-Scale
Sub SetXMinMaxScale()
With ActiveSheet.ChartObjects(1).Chart.Axes(xlCategory)
.MinimumScale = ActiveSheet.Range("AW4").Value
.MaximumScale = ActiveSheet.Range("AW5").Value
End With
End Sub
'Wertezellen für Min-, Max-ScrollBar1
Sub SetMinMaxScrollBar1()
ScrollBar1.Min = IIf(Range("AU15") > 0, Range("AU15"), ScrollBar1.Max)
ScrollBar1.Max = IIf(Range("AU19") > 0, Range("AU19"), ScrollBar1.Min)
End Sub
'Wertezellen für Min-, Max-ScrollBar2
Sub SetMinMaxScrollBar2()
ScrollBar2.Min = IIf(Range("AJ9") > 0, Range("AJ9"), ScrollBar2.Max)
ScrollBar2.Max = IIf(Range("AM9") > 0, Range("AM9"), ScrollBar2.Min)
End Sub
Ich habe als den Ursprung jeweils die Change-Ereignisse von SpinButton1 und 2 und ScrollBar1 und 2 verwendet
( Du hattest vehement darauf hingewiesen ).
Dieser Code funktioniert einwandfrei für das dynamische Anpassen der Min-, Max-Werte der X-Achse und
das dynamische Anpassen der Min-, Max-Werte der Schieberegler 1 und 2.
Sicherlich wird der Code noch zu optimieren sein, aber ich freue mich darüber, überhaupt es bis hierhin
geschafft zu haben.
Du hast mir sehr geholfen und dafür einen schönen Dank!
Schöne Grüße Golem
Anzeige

38 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige