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

leere Charts beim ersten Durchlauf

leere Charts beim ersten Durchlauf
05.02.2019 07:28:26
Mike
Hallo zusammen,
ich habe ein Problem mit dem Druck bzw. der Aktualisierung von Charts und/oder mit dem Ablauf von Makros.
In einer Arbeitsmappe befinden sich mehrere datengefüllte Sheets. Diese Daten werden über eine Chart grafisch dargestellt. Für die Darstellung werden die Daten vorher konsolidiert. Der Ablauf sieht wie folgt aus.
1. Makro ruft externe Daten aus einer Mappe ab.
2. diverse Makros bereiten die Daten pro Sheet auf
3. Makro sammelt die Daten der Sheets und konsolidiert sie auf einem extra Sheet
4. Makro druckt anschließend aktualisierte Chart aus
Von diesen Mappen gibt es mehrere und in jeder dieser Mappen funktionieren die Schritte einwandfrei und auch bereits seit mehreren Monaten.
Nun habe ich auf Grund von Zeitersparnis eine „Master“xlms erstellt und dort ein Makro geschrieben welches nichts anderes macht als nacheinander jede der oben genannten Excel Dateien aufzurufen und darin die Makros zu starten. Also quasi das was vorher manuell gestartet werden musste lasse ich über ein Makro mit Schleife für alle Mappen ausführen.
Das Problem:
Beim ersten Start werden zwar Daten abgeholt und auch aufbereitet aber der Ausdruck der Chart am Ende ist leer bzw. es sind noch die Datensätze vom Vortag drin. Starte ich nach dem ersten Durchlauf das gleiche Makro erneut sind die Charts mit den gewünschten aktuellen Daten gefüllt.
Es gibt keinerlei Fehlermeldungen oder sonstige Hinweise die dieses Verhalten erklären. Alles läuft einwandfrei durch.
Und ich bin mir auch eigentlich sicher, dass es nicht an einem Fehler im Makro selbst liegt da jedes für sich einwandfrei funktioniert. Nur diese Reihenschaltung von Makros hat diesen "Effekt".
Als ob der Schritt der Chartaktualisierung beim ersten Durchlauf übersprungen wird.
Hat vielleicht schon mal jemand etwas ähnliches beobachtet oder kann mir einen Tipp zur Fehlersuche geben? Womit könnte es zusammenhängen das die Charts erst beim zweiten Durchlauf mit aktuellen Daten gefüllt sind.
Gruß
Mike

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Der Fehler liegt nicht an den Makros...
05.02.2019 09:11:43
Beverly
Hi Mike,
...sondern daran, dass Excel offensichtlich zeitlich mit dem grafischen Aufbau nicht fertig wird, weil es mit anderem beschäftigt ist. Du kannst versuchen, im Code nachdem das Diagramm neu aufgebaut worden sein müsste ein- oder mehrmals hintereinander die Zeile DoEvents einzufügen. Damit wird die Reaktion an das Betriebssystem übergeben - vielleicht hilft das ja.


AW: Der Fehler liegt nicht an den Makros...
06.02.2019 13:29:04
Mike
Hallo Karin,
Danke für deinen Anregung. Das hat leider nicht den gewünschten Effekt gebracht.
Ist es nicht auch so, dass DoEvents auf die eigentlichen Abläufe keinen direkten Einfluss hat sondern vielmehr die Möglichkeit geschaffen wird trotz aktuell laufender Abläufe Eingaben zu machen bzw. zu unterbrechen?
Zumindest hat das leider nicht geholfen.
Ich versuche jetzt noch durch zwischengebaute Abfragen das Fehlverhalten einzugrenzen.
Für weitere Ratschläge bin ich dennoch offen.
Gruß
Mike
Anzeige
AW: Der Fehler liegt nicht an den Makros...
06.02.2019 15:40:53
Beverly
Hi Mike,
zwischengebaute Abfragen nützen dir nichts, weil sie den Codeablauf anhalten und damit Excel blockieren, sodass der Bildschirmaufbau erst Recht nicht ausgeführt werden kann.
Wie ich schon geschrieben habe: DoEvents übergibt (auch) die Kontrolle an das Betriebssystem, sodass weitere in der Warteschlange stehende Prozesse parallel abgearbeitet werden können. Und zu den parallel ausgeführten Prozessen gehört der Bildschirmaufbau. Vielleicht solltest du DoEvents in einer Schleife verwenden - schau einfach mal bei Google zum Stichwort DoEvents.
Mir hat DoEvents in Sachen nicht ausgeführtem Bildschirmaufbaus (insbesondere auch bei Diagrammen) jedenfalls immer geholfen, indem ich den Befehl an mehreren (sinnvollen) Stellen im Code verwendet habe.


Anzeige
AW: Der Fehler liegt nicht an den Makros...
08.02.2019 09:49:58
Mike
Hallo Karin,
nach einigen Versuchen habe ich nun fesstellen müssen, dass es nicht an der Chart ansich liegt.
Die Daten welche als Grundlage für die Chart stehen werden nicht korrekt gefiltert.
Kurios ist, dass offensichtlich die Filter zwar funktionieren aber bei automatischen Abläufen nicht immer richtig gesetzt werden.
Vielleicht ist mein Makro auch nicht ganz optimal. Habe das ursprüngliche welches mit Markorecord erstellt wurde umgeschrieben und etwas "optimiert".
Sub FilterBDE()
Dim wsBDEM As Worksheet
Dim wsBDE As Worksheet
Dim iZende As Long
Set wsBDEM = ThisWorkbook.Sheets("BDE M")
Set wsBDE = ThisWorkbook.Sheets("BDE")
wsBDE.Columns("A:S").ClearContents
wsBDEM.Activate
If wsBDEM.FilterMode Then wsBDEM.ShowAllData
ActiveSheet.UsedRange.Sort Key1:=Range("E2"), Order1:=xlAscending, Header:=xlYes, OrderCustom:= _
1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
iZende = wsBDEM.Cells(Rows.Count, 1).End(xlUp).Row
With wsBDEM.Range(Cells(1, 1), Cells(iZende, 29))
.AutoFilter Field:=8, Criteria1:=">2", Operator:=xlAnd
.AutoFilter Field:=27, Criteria1:=">0", Operator:=xlAnd, Criteria2:="=-1", Operator:=xlAnd, Criteria2:="
Vielleicht magst du mal einen Blick drauf werfen. Die ersten Versuche mit DoEvents haben hier nicht geholfen aber ich schaue nochmal ob ich es an anderer Stelle einfügen kann.
Gruß
Mike
Anzeige
AW: Der Fehler liegt nicht an den Makros...
08.02.2019 12:24:01
Beverly
Hi Mike,
hier wird doch kein Diagramm erstellt, also brauchst du hier auch kein DoEvents.
Auf jeden Fall verlangsamt schon mal Activate - das ist nicht notwendig und man sollte da besser mit einer With-Anweisung arbeiten:
Dim wsBDEM As Worksheet
Dim wsBDE As Worksheet
Dim iZende As Long
Set wsBDEM = ThisWorkbook.Sheets("BDE M")
Set wsBDE = ThisWorkbook.Sheets("BDE")
wsBDE.Columns("A:S").ClearContents
With wsBDEM
If .FilterMode Then .ShowAllData
.UsedRange.Sort Key1:=.Range("E2"), Order1:=xlAscending, Header:=xlYes, OrderCustom:= _
1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
iZende = .Cells(Rows.Count, 1).End(xlUp).Row
With .Range(.Cells(1, 1), .Cells(iZende, 29))
.AutoFilter Field:=8, Criteria1:=">2", Operator:=xlAnd
.AutoFilter Field:=27, Criteria1:=">0", Operator:=xlAnd, Criteria2:="=-1", Operator:=xlAnd, Criteria2:="

Außerdem musst du nicht die gesamte(n) Spalte(n) kopieren und als Ziel reicht die Adresse der 1. Zelle in die kopiert werden soll.


Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige