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

Select Range ergibt Laufzeitfehler 1004

Select Range ergibt Laufzeitfehler 1004
16.04.2023 12:11:03
KlausFz

Hallo Excellenzen,

habe beim kleinen, simplen Makro zum Zusammenführen von Kontenbewegungen aus einzelnen Sheets in das Sheet "Alles"
ein Problem. Nach dem Zusammenkopieren werden in "Alles" die Daten sortiert, nach Konten gruppiert und Teilsummen eingefügt.
Beim Markieren des Gesamtbereiches vor dem Teilergebnisse-einfügen kommt es zum Hänger.
https://www.herber.de/bbs/user/158735.xlsm

Das Makro ging im Debugging-Einzelschritt problemlos durch.
Nach Start mittels Button bleibt es in der imho simplen Zeile
Sheets("Alles").Range("A6:D" & Z_A).Select
mit der Fehlermeldung "Laufzeitfehler 1004 - Select-Methode des Range-Objektes konnte nicht ausgeführt werden" stecken.
"Alles" ist vorher aktiviert; Variable Z_A ist korrekt ermittelt und als Long deklariert.Das Blatt "Alles" ist nicht geschützt.
Auch das Erweitern der Referenz auf ActiveWorkbook.Worksheets("Alles").Range("A6:D" & Z_A).Select bringt den gleichen Fehler.
Im Netz hab' ich nix Hilfreiches gefunden.
Ich begreif's nicht. Seh' ich den Wald vor lauter Bäumen nicht?

Besten Dank für Eure Mühe!
Klaus

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

Betreff
Datum
Anwender
Anzeige
AW: Select Range ergibt Laufzeitfehler 1004
16.04.2023 13:02:24
Daniel
Hi
"Select" kann immer nur auf aktiven Ebene durchgeführt werden.
Eine Range kannst du immer nur im aktiven Tabellenblatt selektieren.
Du musst also zuerst das Tabellenblatt und danach die Range selektieren
Sheets("Alles").Select
ActiveSheet.Range("A6:D" & Z_A).Select
eine andere Möglichkeit ist Application.Goto, dass kann Blatt und Range gleichzeitig selektieren:
Application.Goto Sheets("Alles").Range("A6:D" & Z_A)
noch besser ist in der Regel so zu programmieren, dass man nicht selektiert, sondern den Bereich direkt anspricht:
dh statt
Sheets("Alles").Select
ActiveSheet.Range("A6:D" & Z_A).Select
Selection.Copy
schreibt man
Sheets("Alles").Range("A6:D" & Z_A).Copy
dh statt select hängt man den eigentlichen Befehl an die Range bzw das zu bearbeitende Objekt an.
Gruß Daniel


Anzeige
AW: Select Range ergibt Laufzeitfehler 1004
16.04.2023 14:54:57
KlausFz
Hi Daniel,

zuerst Danke für deine Mühe!
Ein Teil Deiner Erklärung (erst Blatt selectieren, dann erst Range) war mir im Prinzip bekannt und ich hatte das im Code so angelegt - dacht ich.
Sheet("Alles").Select steht im letzten Kopierblock, ab diesem Moment wird das Sheet ja nicht mehr gewechselt - von mir aus.
Aber scheinbar verursacht der folgende Codeabschnitt mit dem Sortieren das "Vergessen" des selektierten Blattes!!!
Dazu die Probe:
Nehme ich aus meinem nachfolgenden Code Sheets("Alles").Range("A6:D" & Z_A).Select den Sheet-Teil raus, dann will er die
Gruppierung/Teilergebnisse im zuletzt bearbeiteten Einzelkontenblatt durchführen und nicht im Blatt "Alles".

Also doch wieder das Blatt selektieren - nach dem Sortieren und vor Teilergebnisse.

Als Ergebnis der ganzen Sache nun der folgende, funktionierende Code:
Sheets("Alles").Select
Range("A6:D" & Z_A).Subtotal GroupBy:=4, Function:=xlSum, TotalList:=Array(3), _
Replace:=True, PageBreaks:=True, SummaryBelowData:=True

Wieder was dazugelernt.
DDD - Danke Dir Daniel!

Klaus

.


Anzeige
AW: Select Range ergibt Laufzeitfehler 1004
16.04.2023 18:54:44
Daniel
Wenn man Code aufzeichnet, dann ist man ja immer im aktiven Tabellenblatt und dafür wird der Code auch aufgezeichnet.
Wenn man dann den Code ohne Select laufen lassen will, muss man für alles, was nicht im aktiven Blatt gemacht wird, vor JEDEM Range, Cells, Columns oder Rows das Tabellenblatt ergänzen. Dabei muss man schon genau hinschauen, damit man wirklich JEDE stelle überarbeitet und keine übersieht.
Gerne vergessen wird das das bei Range(Cells(), Cells()) und auch der für das Sortieren aufgezeichnete Code hat Stellen, die man hierbei übersieht.
Gruß Daniel


AW: Select Range ergibt Laufzeitfehler 1004
16.04.2023 19:01:14
KlausFz
Bleibt noch die Frage:
Warum klappts beim Debugging in Einzelschritten - ohne Fehlermeldung!
Und im Gesamtdurchlauf dann nicht.
Kapier' ich nicht!


Anzeige
AW: Select Range ergibt Laufzeitfehler 1004
16.04.2023 19:08:43
Daniel
kann es sein, dass du im Debugging von Hand auf das "richtige" Blatt wechselt, um zu sehen was dort passiert?
Wenn du das machst, funktioniert der Code, weil es ihm egal ist, ob du jetzt das Blatt selektierst oder ob das das Makro macht.
Gruß Daniel


AW: Select Range ergibt Laufzeitfehler 1004
16.04.2023 19:15:43
KlausFz
Klatsch!!! - Mit der flachen Hand an die Stirn!
Klar, das wars!

Danke Daniel!
Nun ist das Thema erledigt.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige