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

Flächendiagramm per VBA geändert

Flächendiagramm per VBA geändert
28.06.2013 23:38:59
Edwin
https://www.herber.de/bbs/user/86117.xlsm
Hallo,
ich kann mein Flächendiagramm soweit per VBA ändern. Siehe Anhang
Das Diagramm ist im Sheet "Zeitstrahl", das seine Daten aus "Zusammenfassung Daten" zieht.
Wenn ich bei "Zusammenfassung Daten" das Datum in C1 ändere, verändert sich auch mein Diagramm entsprechend. Soweit ist alles prima.
In "Zusammenfassung Daten" E2 berechne ich, wie viele Diagrammzeilen angezeigt werden sollen.
=RUNDEN(H1-E1+5;0)
Ich sollte aber =RUNDEN(H1-E1+6;0) berechnen, damit es mir auch die letzte Zeile mit dem Wert 93,7 im Diagramm anzeigt.
Wenn ich das aber mache, verbiegt es mir das Diagramm total.
Ich habe keine Ahnung warum.
Kann mir jemand helfen?
LG
Edwin

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

Betreff
Datum
Anwender
Anzeige
AW: Flächendiagramm per VBA geändert
29.06.2013 09:03:42
Beverly
Hi Edwin,
vielleicht habe ich dich falsch verstanden, aber wenn du die Zeile ermitteln willst, in der das Diagramm enden soll, wäre m.E. die folgende Formel korrekt
=VERGLEICH(H1;A:A;0)


AW: Flächendiagramm per VBA geändert
29.06.2013 09:40:07
Edwin
Hallo Karin,
ich kannte die Formel "Vergleich" bisher nicht, aber sie ist genau das was ich brauche.
Allerdings wird als Ergebnis "FALSCH" geliefert.
Ich habe jetzt schon die Formate der Zellen überprüft und den Zellenwert. Allerdings ohne Erfolg. Ich weiß nicht, warum "FALSCH" geliefert wird.
H1 enthält die Zahl 93,7
A51 enthält =WENN(A50="";"";WENN(A50+0,1>$H$1;""; WENN(A50+1<$H$1;A50+1;$H$1)))
also nur durch eine Formel 93,7.
Kann es daran liegen?
Vielen Dank für Deine rasche Antwort.
LG
Edwin

Anzeige
AW: Flächendiagramm per VBA geändert
29.06.2013 10:00:32
Beverly
Hi Edwin,
den Fehler kann ich nicht nachvollziehen - es wird korrekt 51 angezeigt, da die 93,7 in A51 steht:
Zusammenfassung Daten
 BCDEFGH
1Datum21.05.1964 Beginn Zeitstrahl 49Ende Zeitstrahl  93,7
2Grundwert Rote Fläche                     1.500,00 €  Diagrammzeilen 51     
3Steigerung2%         

verwendete Formeln
Zelle Formel Bereich
E1 =DATEDIF(C1;HEUTE();"y") 
E2 =VERGLEICH(H1;A:A;0) 

Tabellendarstellung in Foren Version 8.6 by Beverly's Excel-Inn




Anzeige
AW: Flächendiagramm per VBA geändert
29.06.2013 10:46:34
Edwin
https://www.herber.de/bbs/user/86121.xlsm
Hallo Karin,
wenn ich den "Vergleich" an anderer Stelle ausprobiere, dann geht es.
Warum also nicht in E2?
Ich kann es auch nicht nachvollziehen.
LG
Edwin

AW: Flächendiagramm per VBA geändert
29.06.2013 10:54:57
Beverly
Hi Edwin,
ich weiß nicht, was du mit der Zelle gemacht hast, aber folgendes steht da drin (alles in derselben Zelle!!):
=VERGLEICH(H1;A6:A106;0)
=VERGLEICH(H1;A:A;0)
=VERGLEICH(H1;A:A;0)
Das siehst du, wenn du die Bearbeitungsleiste vergrößerst darstellst.


Anzeige
AW: Flächendiagramm per VBA geändert
29.06.2013 13:53:52
Edwin
Hallo Karin,
das muss man auch erst mal hinbekommen.
;-)
Danke, dass Du den Fehler gefunden hast.
Das eigentliche Problem besteht aber weiterhin.
Ich muss zu
=VERGLEICH(H1;A6:A106;0)+5
5 hinzu addieren, damit der gesamte Datenbereich im Diagramm berücksichtigt wird.
Und dann wird im Zeitstrahl nicht mehr die Zeitstrahlbeschriftung von B6:B? übernommen, sondern die Zeilennummern.
https://www.herber.de/bbs/user/86123.xlsm
Danke für Deine Geduld.
LG
Edwin

AW: Flächendiagramm per VBA geändert
29.06.2013 14:56:02
Beverly
Hi Edwin,
meine Formel war =VERGLEICH(H1;A:A;0), was gleichbedeutend ist, dass die Zeilenzählung tatsächlich bei 1 beginnt. Mit deiner Formel =VERGLEICH(H1;A6:A106;0) beginnt die Zeilenzählung bei A6, also A6 = 1. Zeile und somit steht die 93,7 bei dir in Zeile 32 (des Bereichs A6:A106), wa aber tatsächlich Zeile 37 der Gesamtspalte A sein muss - die Folge ist, dass du, um die tatsächliche Zeile in Bezug auf die Gesamtspalte A zu erhalten, noch 5 addieren musst.


Anzeige
AW: Flächendiagramm per VBA geändert
29.06.2013 16:37:35
Edwin
Hallo Karin,
ah jetzt ja ;-)
Hat geklappt.
Jetzt nur noch die Zeitstrahlbeschriftung.
Mit dem Makrorecorder habe ich die Änderung aufgezeichnet und das Ergebnis stimmt.
Ich kann allerdings den Code vom Recorder nicht um texten, da kenne ich mich nicht aus.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$1" Then
Worksheets("Zeitstrahl").ChartObjects("Diagramm 1").Chart.SetSourceData Source:= _
Worksheets("Zusammenfassung Daten").Range("B5:E" & Range("E2"))
ActiveChart.SeriesCollection(1).XValues = "='Zusammenfassung Daten'!$B$6:$B$37"   _
End If
End Sub

Ich meine die Zeile ActiveChart. analog zur vorherigen Zeile also .Range("B6:B" & Range("E2"))
LG
Edwin

Anzeige
AW: Flächendiagramm per VBA geändert
29.06.2013 20:23:21
Beverly
Hi Edwin,
ich würde denken dass es so funktionieren sollte:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$1" Then
'Die Datenquelle im Diagramm wird entsprechend dem Alter angepasst
With Worksheets("Zeitstrahl")
.ChartObjects("Diagramm 1").Chart.SetSourceData Source:=.Range("B5:E" & .Range("E2"))
.ChartObjects("Diagramm 1").Chart.SeriesCollection(1).XValues = _
.Range("B6:B" & .Range("E2"))
End With
End If
End Sub


Anzeige
AW: Flächendiagramm per VBA geändert
29.06.2013 21:29:25
Edwin
Hallo Karin,
bei mir kommt Laufzeitfehler 1004. Anwendungs- oder objektdefinierter Fehler.
Läuft bei Dir der Code fehlerfrei durch?
LG
Edwin

AW: Flächendiagramm per VBA geändert
29.06.2013 22:01:57
Beverly
Hi Edwin,
sorry, ich hatte nicht getestset und übersehen, dass das Diagramm sich in einem anderen Tabellenblatt befindet.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$1" Then
'Die Datenquelle im Diagramm wird entsprechend dem Alter angepasst
With Worksheets("Zeitstrahl")
.ChartObjects("Diagramm 1").Chart.SetSourceData _
Source:=Worksheets("Zusammenfassung Daten").Range("B5:E" & _
Worksheets("Zusammenfassung Daten").Range("E2").Value)
.ChartObjects("Diagramm 1").Chart.SeriesCollection(1).XValues = _
Worksheets("Zusammenfassung Daten").Range("B6:B" & _
Worksheets("Zusammenfassung Daten").Range("E2"))
End With
End If
End Sub
Diesen Code habe ich getestet und er läuft ohne Fehler durch.


Anzeige
AW: Flächendiagramm per VBA geändert
30.06.2013 09:15:59
Edwin
Hallo Karin,
Du bist ein Goldschatz.
Die Zeitstrahlbeschriftungen (Diagrammzeilen) werden bis 93,7 angezeigt.
Allerdings, in der Legendenbezeichnung taucht jetzt die Zeitstrahlbeschriftung auf, die da nicht hingehört und auch die Farb-Füllungen der Diagrammflächen sind verschoben.
Wenn Du bei E2 (Zusammenfassung Daten) die Formel zum Test in
=VERGLEICH(H1;A:A;0)-1
abänderst, dann wird die Legende und die Füllungen richtig angezeigt.
Nur dann fehlt eben wieder die Diagrammzeile 93,7.
LG
Edwin

AW: Flächendiagramm per VBA geändert
30.06.2013 10:02:30
Beverly
Hi Edwin,
du weist dem Diagramm den Bereich aus Spalte B bis E zu - somit wird Spalte B als Datenreihe verstanden und nicht als Beschriftung der Horizontalachse. Ändere den Code so, dass der Datenbreich ab Spalte C zugewiesen wird, dann sollte alles funktionieren.
Formel muss so bleiben =VERGLEICH(H1;A:A;0).


Anzeige
AW: Flächendiagramm per VBA geändert
30.06.2013 10:36:59
Edwin
Hallo Karin,
ich könnt Dich knuddeln.
Vielen, vielen Dank.
LG
Edwin

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige