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

Makro zerschossen,- blicke es nicht mehr

Makro zerschossen,- blicke es nicht mehr
14.05.2022 18:22:02
Fred
Hallo ExcelProfis,
ich habe in einem Makro so viel rumgeschraubt, das es nun evt. "zerschossen ist",- , auf jeden Fall blicke ich nun nicht mehr durch.
Anscheinend wird das kopieren von Spalten nicht wie gewünscht ausgeführt.
Kann mal bitte jemand drauf schaun und mir "das Makro retten"?
https://www.herber.de/bbs/user/153073.xlsb
Gruss
Fred

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

Betreff
Datum
Anwender
Anzeige
Makro zerschossen,- blicke es nicht mehr
14.05.2022 19:23:06
Fred
Hallo ExcelExperten,
nun läuft es wieder. Dieser genennte Fehler tritt allerdings regelmäßig auf. Ich weis nicht, woran es liegt.
Hier mal ein Shot
Userbild
Das Makro "Sub vonLiveNachImport()" sorgt hier für die Änderung der SpaltenÜberschriften und es kommt später zur Fehlermeldung ( wenn sortiert werden soll)
Gruss
Fred
AW: Makro zerschossen,- blicke es nicht mehr
14.05.2022 22:29:25
Luschi
Hallo Fred,
würdest Du bei ungewöhnlichem Verhalten von Makro-Code mit Halltepunkten (F9-Taste) und Einzelschrittmodus (F8-Taste) arbeiten, hättest Du bemerkt, daß plötzlich und ohne Vorwarnung das 'Worksheet_SelectionChange'-Ereignis oder auch das 'Worksheet_Change'-Ereignis ausgeführt wird, denn Du hast vergessen nach dem Start des Makros die Excel-Ereignis-Routinen abzuschalten.
Wenn man dann im Vba-Code den Cursor im Tabellenblatt neu positioniert oder Zellen einen neuen Wert reinschreibt, dann treten eben diese Dinger in Aktion, die eigentlich nur aktiv sein sollten, wenn der User per Maus oder Tastatur den Cursor platziert oder in einer Zelle neue Werte eingibt.
Deshalb schalte zu Beginn die Ereignis-Routinen ab:
Application.EnableEvents = False
und am Ende des Makros wieder an:
Application.EnableEvents = True
Außerdem sollte mindestens noch die automatische Berechnung für die Laufzeit des Makros deaktiviert, sein - suche dazu im Browser Deiner Wahl nach: Excel Vba GetMoreSpeed
Gruß von luschi
aus klein-Paris
PS: das Arbeiten mit den Möglichkeiten des Vba-Debuggers hilft unheimlich, selbst den Fehlern auf die Schliche zu kommen; also Haltepunkt setzen, weiter im Einzelschrittmodus, weiter bis Cursor, Überwachungsfenster zum Einsehen von Variableninhalten, Vba-Befehlen im Direktfenster testen usw.
Anzeige
AW: Makro zerschossen,- blicke es nicht mehr
14.05.2022 23:18:36
Fred
Hallo luschi,
vielen Dank für deine ausführliche Rückmeldung!!
Ich habe nun in das aufgerufene Makro "vonLiveNachImport" folgendes eingetragen:

Application.EnableEvents = False
Application.Calculation = xlCalculationManual
und zum Ende des Makros "vonLiveNachImport" dieses wieder aktiviert.
Es läuft nun ohne Fehlermeldung ( bis auf die Einträge in "Live" Spalte "DY" ( hier werden alles gleiche Werte eingetragen,- dem werde ich allerdings erst morgen nachgehen)
Ich weis nun allerdings noch nicht, ob das Abschalten der Ereignis-Routinen nun auch zukünftig für einen Fehlerfreien Ablauf entscheidend sind,
Wieso werden,- bzw. wurden bisher die Überschriften geändert?
Ich bin da eher von fehlerhaften Einträgen in zB

lngSpalteMax = .UsedRange.SpecialCells(xlCellTypeLastCell).Column - 1 
ausgegangen ...
Gruss
Fred
Anzeige
AW: Makro zerschossen,- blicke es nicht mehr
14.05.2022 23:31:31
Fred
Hallo Luschi,
nochmals eine Frage;
Könnte ich anstatt deiner Optionen eventuell das "Worksheet_SelectionChange" Ereignis ) auf Tabellenblatt "Live" anders lösen,- zB über einen Button ?
Gruss
Fred
AW: Makro zerschossen,- blicke es nicht mehr
15.05.2022 23:25:57
Luschi
Hallo Fred,
der Ersteller des Vba-Codes wird sich schon was gedacht haben, wenn er Prozeduren für die o.g. Ereignisse erstellt. Diese sind sie ja dafür gedacht, auf das Verhalten des Anwenders im Tabellenblatt zu reagieren. Viele dieser Ereignis-Prozeduren springen aber auch an, wenn Vba Änderungen im Tabellenblatt realisiert.
Der einzige Weg, Vba vorübergehen diese 'Flausen' auszutreiben, ist die Property/Eigenschaft 'EnabledEvents' zu deaktivieren - und das ist gut so!
Es gibt aber auch den umgekehrten Fall:
- in einem geschützten Tabellenblatt darf der User kaum was
- Vba kann aber fast ALLES
- Zauberwort hier heißt 'UserInterfaceOnly'
Gruß von Luschi
aus klein-Paris
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige