Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
748to752
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
748to752
748to752
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

code fuer DIAGRAMMFORMATIERUNG kuerzen

code fuer DIAGRAMMFORMATIERUNG kuerzen
29.03.2006 23:07:38
th.heinrich
bestets Forum,
bekomme nicht mal das select weg :-( gibts sonst noch was zu kuerzen.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.ScreenUpdating = False
Sheets("Diagramm1").Select
With ActiveChart.Axes(xlValue)
'.Axes (xlValue)
.MinimumScale = Sheets("Auswertung").Range("L1").Value - 5
.MaximumScale = Sheets("Auswertung").Range("J1").Value + 5
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.Crosses = xlCustom
.CrossesAt = 0
.ReversePlotOrder = False
.ScaleType = xlLinear
End With
With ActiveChart.Axes(xlCategory)
'.Axes (xlValue)
.MinimumScale = Sheets("Auswertung").Range("P1").Value - 0.5
.MaximumScale = Sheets("Auswertung").Range("N1").Value + 0.5
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.Crosses = xlCustom
.CrossesAt = Sheets("Auswertung").Range("P1").Value - 0.5
.ReversePlotOrder = False
.ScaleType = xlLinear
End With
Application.ScreenUpdating = True
End Sub

vielen dank fuer hilfe
gruss thomas

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: code fuer DIAGRAMMFORMATIERUNG kuerzen
29.03.2006 23:48:13
Ramses
Hallo Thomas
"...bekomme nicht mal das select weg ..."
Dann wollen wir dir mal helfen :-)
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim myChart As ChartObject, myChartArea As Chart
    Set myChart = ActiveSheet.ChartObjects("Diagramm 1")
    Set myChartArea = myChart.Chart
    Application.ScreenUpdating = False
    With myChartArea
        With .Axes(xlValue)
            .MinimumScale = Sheets("Auswertung").Range("L1").Value - 5
            .MaximumScale = Sheets("Auswertung").Range("J1").Value + 5
            .MinorUnitIsAuto = True
            .MajorUnitIsAuto = True
            .Crosses = xlCustom
            .CrossesAt = 0
            .ReversePlotOrder = False
            .ScaleType = xlLinear
        End With
        With .Axes(xlCategory)
            .MinimumScale = Sheets("Auswertung").Range("P1").Value - 0.5
            .MaximumScale = Sheets("Auswertung").Range("N1").Value + 0.5
            .MinorUnitIsAuto = True
            .MajorUnitIsAuto = True
            .Crosses = xlCustom
            .CrossesAt = Sheets("Auswertung").Range("P1").Value - 0.5
            .ReversePlotOrder = False
            .ScaleType = xlLinear
        End With
    End With
    Application.ScreenUpdating = True
End Sub

Das ist eine Inkonsistenz im Object-Katalog von EXCEL.
Die "Axes" Eigenschaft wird von EXCEL als Methode erkannt/verwendet.
Daher taucht es weder im Lokal-Fenster noch im Intellisense auf.
Die Diskussion hatten ich kürztlich erst mit Peter H. bis wir diese Lösung fanden.
Ist zwar irgendwie logisch, .... aber eben doch nicht.
Das ganze ist ungetestet !!
Also mal ausprobieren.
Kürzen ?
Alles was du nicht brauchst :-)
Gruss Rainer
Anzeige
Thomas, bin neugierig
30.03.2006 08:08:35
Bernd
Hi Thomas,
ich will ja noch lernen. Darum die Bitte an Dich, ob du die zugrundeliegende Datei mal hochladen könntest.
Danke
Bernd
upload, mit erkenntnis?
30.03.2006 14:32:05
th.heinrich
hallo Rainer & Bernd,
danke fuer Euer interesse, besonders wg. des vorschlages. leider weiter mit bug, was wahrscheinlich daran liegt, dass das diagramm nicht eingebettet ist. mit ChartObjects habe ich auch schon experimentiert, ohne erfolg :-(
ausserdem wird der Diagrammindex immer weiter hochgezaehlt was zusaetzliche probs bedeutet.
by the way, der code Skala funzzt soweit. warum muss ich auch so ein kompliziertes select entfernen wollen.
https://www.herber.de/bbs/user/32432.xls
gruss thomas
ps. naechstes prob steht schon an: wie die Skalierungsintervalle sinnvoll gestalten? Minor-, MinorUnits
Anzeige
AW: upload, mit erkenntnis?
30.03.2006 18:08:39
Herbert
hallo thomas,
probier einmal:


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.ScreenUpdating = False
With Charts("Diagramm_Auswertung")
        With .Axes(xlValue)
            .MinimumScale = Sheets("Auswertung").Range("L1").Value - 5
            .MaximumScale = Sheets("Auswertung").Range("J1").Value + 5
        End With
        
        With .Axes(xlCategory)
            .MinimumScale = Sheets("Auswertung").Range("P1").Value - 0.5
            .MaximumScale = Sheets("Auswertung").Range("N1").Value + 0.5
            .CrossesAt = Sheets("Auswertung").Range("P1").Value - 0.5
        End With      
End With
    Application.ScreenUpdating = True
End Sub

     bei den Intervallen mußt du selber wissen,was für dich sinnvoll ist...
gruß Herbert
Anzeige
AW: spitze Herbert u. frage zu den INTERVALLEN
30.03.2006 21:51:39
th.heinrich
besten dank fuer die loesung,
zur einstellung von Intervallen bin ich auf diesen thread https://www.herber.de/forum/archiv/748to752/t750241.htm#750358 gestossen, an dem Du auch beteiligt bist. verstehe leider das berechnungsprinzip nicht. kannst Du mich bitte aufklaeren?
oder auch evtl. meine .xls anschauen. Min-, Maxwerte werden aus der tabelle Auswertung geholt; soweit o.k. ist es nun moeglich die beiden Grössenachsen so zu skalieren, dass auch am Maximum zahlen stehen?
gruss thomas
Anzeige
AW: spitze Herbert u. frage zu den INTERVALLEN
31.03.2006 09:57:11
Bernd
Tja,
der Herbert, der ist schon spitze!
Grüße
bernd
na haste was gelernt? ;-)) mt.
31.03.2006 12:47:06
th.heinrich
hallo Bernd,
und evtl. einen vorschlag zu meiner frage, wg. Intervalle.
gruss thomas
AW: na haste was gelernt? ;-)) mt.
31.03.2006 15:27:00
Herbert
hallo thomas,
probier das einmal:


'ins Diagramm-modul
Private Sub Chart_Activate()
Dim minScV%, maxScV%, minScC%, maxScC%, mj%, cr%
Application.ScreenUpdating = False
minScC = Sheets("Auswertung").Range("P1").Value - 0.5
maxScC = Sheets("Auswertung").Range("N1").Value + 0.5
minScV = Sheets("Auswertung").Range("L1").Value + 5
maxScV = Sheets("Auswertung").Range("J1").Value + 5
cr = Sheets("Auswertung").Range("P1").Value - 0.5
If minScV Mod 2 = 1 Then maxScV = maxScV + 1
With Charts("Diagramm_Auswertung")
        With .Axes(xlValue)
            .MajorUnit = 2
            .MinimumScale = minScV
            .MaximumScale = maxScV
        End With
        
        With .Axes(xlCategory)
            .MinimumScale = minScC
            .MaximumScale = maxScC
            .CrossesAt = cr
        End With
        
End With
    Application.ScreenUpdating = True
End Sub

     
dasChange-Ereignis wurde doppelt ausgeführt,darum im Chart-Active-Ereignis...
gruß Herbert
Anzeige
AW: na haste was gelernt? ;-)) mt.
31.03.2006 16:18:11
Herbert
ich hatte vorher nur ein Bier getestet...
so läuft es vielleicht besser...


Private Sub Chart_Activate()
Dim minScV%, maxScV%, minScC%, maxScC%, mj%, cr%
Application.ScreenUpdating = False
minScC = Sheets("Auswertung").Range("P1").Value - 1
maxScC = Sheets("Auswertung").Range("N1").Value + 1
minScV = Sheets("Auswertung").Range("L1").Value - 5
maxScV = Sheets("Auswertung").Range("J1").Value + 5
cr = Sheets("Auswertung").Range("P1").Value - 1.5
If maxScV Mod 2 = 1 Then maxScV = maxScV + 1
If minScV Mod 2 = 1 Then maxScV = maxScV + 1
With Charts("Diagramm_Auswertung")
        With .Axes(xlValue)
            .MajorUnit = 2
            .MinimumScale = minScV
            .MaximumScale = maxScV
        End With
        
        With .Axes(xlCategory)
            .MinimumScale = minScC
            .MaximumScale = maxScC
            .CrossesAt = cr
        End With
        
End With
    Application.ScreenUpdating = True
End Sub

     gruß Herbert
Anzeige
werde es am WE testen, melde mich wieder thx ot.
31.03.2006 18:13:22
th.heinrich
geschlossen, vielen dank an Herbert ot.
02.04.2006 16:31:47
th.heinrich

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige