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

Zweite Sub erst starten, wenn erste Sub beendet ist

Zweite Sub erst starten, wenn erste Sub beendet ist
14.11.2023 06:10:39
WilliExcel
Hi,

mittels call rufe ich mehrere Subs auf

call 01_Datenanfuegen
call 02_Datensortieren
call 03_Duplikateentfernen

Setze ich Haltepunkte, funktioniert es wunderbar.

Ohne Haltepunkte kommt es vor, dass 03_Duplikateentfernen aufgerufen wird, aber 02_Datensortieren noch nicht fertiggestellt ist.
Die Duplikate werden zwar entfernt, die Daten sind aber noch komplett sortiert.

Wie stelle ich es nun an, dass 03_Duplikateentfernen erst begonnen wird, wenn 02_Datensortieren beendet ist ?
Drehe ich die Reihenfolge um, habe ich zwar die Daten sortiert, aber noch nicht alle Duplikate entfernt.

Ich glaube, würde ich alles in Arrays machen und erst am Schluss die Daten in die Tabelle übertragen, hätte ich das Problem nicht.
Aber das würde meine geistigen Kapazitäten ein wenig übersteigen.

Vielen Dank für einen Tipp.

lg Willi


6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zweite Sub erst starten, wenn erste Sub beendet ist
14.11.2023 06:55:24
ralf_b
spricht etwas dagegen das du die beiden fraglichen Makros in einem Makro vereinst?
dann kannst du mal testen ob es nicht an was Anderem liegt,

sollte das aber eine subtile Frage nach Umbau in Array-Verarbeitung sein, dann fehlen hier die Makros.
AW: Zweite Sub erst starten, wenn erste Sub beendet ist
14.11.2023 09:14:03
daniel
Hi

Arbeitest du mit mehreren Dateien oder hat die Datei mehrere Tabellenblätter?

Wenn ja, dann prüfe bitte, ob du vor JEDEM Cells, Range, Columns oder Rows auch das Tabellenblatt (Worksheet) mit angegeben hast, bei mehreren Dateien Datei und Tabellenblatt (Workbook+Worksheet)

Steht nämlich ein Range oder Cells alleine ohne diese Angabe, so wird immer das aktive Tabellenblatt verwendet, und ob das das richtige ist, ist fraglich.

Schau dir bitte den Code fürs Sortieren genauer an, diese ist besonders anfällig für diesen Fehler, weil er einige Ranges enthält, die man beim Überarbeiten gerne übersieht.

Beim Testen im Einzelstep fällt der Fehler oft nicht auf, weil wir dort gerne vom Hand in den Code eingreifen und das Tabellenblatt aktivieren, das bearbeitet wird (wir wollen ja sehen, wie der Code arbeitet), womit dann das richtige Tabellenblatt aktiv ist, aber wenn der Code alleine läuft, passiert das nicht und das falsche Blatt ist aktiv.

Ich vermute also, dass du das Sortieren im falschen Tabellenblatt ausführst.

Ansonsten, zur Kontrolle ob die Makros in der richtigen Reihenfolge ausgeführt werden, kannst du auch folgendes tun:

Füge in den drei Makros folgende Codezeilen am Anfang und Ende ein:
Sub Makro1()

Debug.Print "Makro1 Start"
...
Hier der Code
...
Debug.Print "Makro1 Ende"
End Sub

Dann kannst du im Direktfenster nachverfolgen, ob und in welcher Reihenfolge die Makros ausgeführt werden.


Eine weitere Möglichkeit:
Verwendest du in den Makros "On Error GoTo" oder "On Error Resume Next"?
Wenn ja, dann lösche oder kommentiere sie aus. Vielleicht wird dein Sortieren ja durch so eine Anweisung aufgrund eines Fehlers übersprungen?



Gruß Daniel
Anzeige
AW: Zweite Sub erst starten, wenn erste Sub beendet ist
15.11.2023 06:05:23
WilliExcel
Guten Morgen

wenn man Leute mit Ahnung fragt, kommt man weiter. Danke
wsxxxx.activate in den einzelnen Subs hat das Problem gelöst.
Dabei war ich der Ansicht, dass ich auf dem richtigen Blatt bin.
Recht herzlichen Dank und lg Willi
AW: Zweite Sub erst starten, wenn erste Sub beendet ist
15.11.2023 09:34:25
daniel
Ja, das löst das Problem
Besser wäre es, vollständig zu referenzieren, also statt:

Sheets(...).Select
Range(...).Befehl

Zu schreiben:
Sheets(...).Range(...).Befehl

Dann funktioniert der Code immer, egal welches tabellenblatt aktiv ist und der Bildschirm flackert nicht mehr, während das Makro läuft.

Gruß Daniel
Anzeige
AW: Zweite Sub erst starten, wenn erste Sub beendet ist
WilliExcel
Hallo Daniel,

das ist eben der Unterschied, zwischen Profi (Du) und Amateur (ich). Theoretisch wusste ich es (in den diversen Büchern fängt gefühlt eine jede zweite Sub mit activate bzw. select an).
Da ich bei meinen VBA-Basteleien üblicherweise auf einem Blatt bleibe, war ich immer auf dem richtigen Blatt. Damit war es egal, ob ich das betreffende Blatt aktiviere oder nicht. Beim herumhüpfen zwischen verschiedenen Blättern schaut die Welt aber anders aus.
Aber dafür gibt es ja Profis, die ihre Erfahrung teilen und Amateure auf den richtigen Weg bringen. Danke und hör bitte nicht auf, Licht ins Dunkel zu bringen.
Lg Willi

Anzeige
AW: Zweite Sub erst starten, wenn erste Sub beendet ist
14.11.2023 08:29:03
Sigi.21
Hallo Willi,

Es sollte nicht so sein. VBA arbeitet die Befehle rein sequentiell ab.
Aber versuch mal ein Warten zwischen den Calls einzubauen: Application.Wait(Now + TimeValue("0:00:10"))

Gruß Sigi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige