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

Fehler nach 4. Durchlauf

Fehler nach 4. Durchlauf
24.11.2022 15:36:31
Stefan
Hallo Zusammen,
Ich habe einen Button, der bei Betätigung ein Makro durchlaufen lässt. Das Funktioniert soweit alles ohne Probleme bis zum 4. Durchlauf.
Eine Tabelle wird pro Durchlauf um zwei Spalten erweitert. In der ersten Zeile der ersten Spalte, wird der Name der Zelle in eine vorher festgelegte Variable geändert.
Mithilfe des vergebenen Zellennamens können die hinzugefügten Spalten bei anderen Funktionen gesucht werden.
Ab dem 4. Durchlauf wird der Variable Name nichtmehr als Zellenname angenommen, somit Funktioniert die Suchfunktion nichtmehr und das Programm wirft Fehlermeldung nach Fehlermeldung aus.
In dieser Zeile wird der Zellenname geändert: ActiveCell.name = name1
Hier ein kleines Beispiel zur Erläuterung:
nach 1. Durchlauf
Name der Zelle: L1 -> Name1
nach 2. Durchlauf
Name der Zelle: N1 -> Name2
nach 3. Durchlauf
Name der Zelle: P1 -> Name3
nach 4. Durchlauf
Name der Zelle: R1 -> R1
Ich hoffe Ihr könnt mir bei den Problem weiterhelfen.
Vielen Dank

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Glaskugel defekt
24.11.2022 15:42:21
Rudi
wie sollen wir die Frage beantworten, ohne den Code zu kennen?
Gruß
Rudi
AW: Glaskugel defekt
24.11.2022 15:52:24
Stefan
Sorry, das hier ist der Code dazu:
Sub test()
Worksheets("Tabelle2").Range("L1:M4").Select
Selection.Copy
Tabelle1.Select
Range("A2").Select
Selection.End(xlToRight).Select
Selection.Offset(-1, 1).Select
ActiveSheet.Paste
ActiveCell.name = name1
Endsub()
In eine andere Tabelle wird nur
Worksheets("Tabelle2").Range("L1:L4").Select
(eine Spalte) kopiert, der Rest ist gleich und dort Funktioniert es.
AW: Glaskugel defekt
24.11.2022 15:55:46
Stefan
Die Globale Variable "name1" wird in einen anderen Sub definiert.
Ist eigentlich nur "Name" & aufsteigende Nummer
Anzeige
mal aufgeräumt
24.11.2022 16:08:06
ChrisL
Hi
Der gezeigte Test-Code funktioniert auch mehr als 4 mal. Wie lautet denn die Fehlermeldung?
Unabhängig davon habe ich dir mal den Code bereinigt.

Sub test()
Dim rngZielZelle As Range
Set rngZielZelle = Tabelle1.Range("A2").End(xlToRight).Offset(-1, 1)
Worksheets("Tabelle2").Range("L1:M4").Copy rngZielZelle
rngZielZelle.Name = "abc"
End Sub
cu
Chris
AW: mal aufgeräumt
24.11.2022 16:15:36
Stefan
Danke dir, ja der Code muss eben Funktionieren.
Die Funktion zum Kopieren Funktioniert endlos. Da sich aber der Zellenname nicht weiter ändert, bekomme ich bei der Suche nach der Zelle diese Fehlermeldung:
Laufzeitfehler '1004':
Die Methode 'Range' für das Objekt '_Worksheet' ist fehlgeschlagen.
Ist ja auch logisch wenn die Zelle nicht existiert, bzw. einen anderen Namen hat...
Ich verstehe nicht, wieso es nach dem 3. Durchlauf nichtmehr funktioniert. Die ähnliche Methode funktioniert ja auch in anderen Tabellenblättern.
Anzeige
AW: mal aufgeräumt
24.11.2022 16:19:25
ChrisL
Hi Stefan
Ich glaub den entscheidenden Codeabschnitt sehen wir nicht.
Der Name wird irgendwie definiert (Zähler) und eine Suche gibt es scheinbar auch noch.
Bitte lade eine Beispieldatei (reduziert auf das Wesentliche), womit man den Fehler eindeutig rekonstruieren/wiederholen kann.
cu
Chris
AW: mal aufgeräumt
24.11.2022 16:34:13
Stefan
Das könnt etwas dauern.. ist ein komplexes Studienprojekt.
Ich habe es jetzt mal mit der gespeicherten Vorgänger Version probiert, hier funktioniert es Fehlerfrei.
Ich versuche den Code Stück für Stück zu übernehmen um den Fehler zu finden.
Danke für die Hilfe!
AW: Glaskugel defekt
24.11.2022 16:10:25
Daniel
Hi

Worksheets("Tabelle2").Range("L1:M4").Select
funktioniert nur, wenn die Tabelle2 schon selektiert ist.
also entweder

Worksheets("Tabelle2").Select
Range("L1:M4").Select
oder

Application.Goto Worksheets("Tabelle2").Range("L1:M4")
oder noch besser, immer die Befehle direkt an die Range-Objekte anhängen ohne zu selektieren

Sub test()
Worksheets("Tabelle2").Range("L1:M4").Copy
With Tabelle1.Range("A2").End(xlToRight).Offset(-1, 1)
.PasteSpeical xlpasteall
.name = name1
End with
End sub()
weiterhin solltest du den Code aus deinem Makro kopieren und nicht neu schreiben.
hier ist beispielsweise "Endsub" zusammengeschrieben und die Objekteigenschaft .name mit Kleinbuchstaben.
beides kann in funktionierenden Code nicht vorkommen. Ansonsten halten wir uns vielleicht an Fehlern auf, die gar keine sind.
Gruß Daniel
Anzeige
AW: Glaskugel defekt
24.11.2022 16:22:44
Stefan
Danke, der Code Funktioniert auch super aber bei dem 4. Durchlauf nimmt er den name1 wieder nicht an..
Sorry, da steht noch einiges belangloses-auskommentiertes. Merke ich mir für das nächste mal!
AW: Glaskugel defekt
24.11.2022 16:39:01
Daniel
Hi
wenns beim 4. mal nicht geht, musst du schauen, was dann anders ist als die 3x davor.
Ohne die Datei können wir dir dabei nicht helfen.
Schau mal bei jedem Durchlauf, welche Zellen jeweils selektiert sind und wie die Namen lauten.
ist es immer der selbe Name, oder hast du bei jedem Durchlauf einen anderen Namen?
prinzipiell fallen mir nur zwei Fehlermöglichkeiten ein:
a) das End(xltoright) springt zur letzten Zelle, so dass das Offset nicht ausgeführt werden kann. Dann müsste aber der Fehler hier schon erscheinen
b) der Name, den du vergeben willst, ist nicht zulässig.
verbundene Zellen können bei solchen Aktionen auch eine Ursache sein, oder wenn der Blattschutz aktiv ist, eine geschützte Zelle.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige