7.6k Aufrufe
Gefragt in Tabellenkalkulation von fedjo Experte (2.2k Punkte)
Hallo Excelfreunde,
hab für euch bestimmt eine einfache Frage.

Wieso verursacht der Code einen Laufzeitfehler 1004?
Die Tabelle ist bis auf die erste Zeile leer und ist nicht formatiert.

Range("B2").End(xlDown).Offset(1, 0).Select

Gruß
fedjo

5 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Fedjo,

Range("B95536").End(xlUp).Offset(1, 0).Select
Auf select kann in VBA zu 99,9% verzichtet werden.
Gruß Hajo
0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hallo Hajo,
mit dem Code: Range("B95536").End(xlUp).Offset(1, 0).Select
erhalte ich den gleichen Fehler.

Ich verzichte soweit wie möglich schon auf Select.
Diesmal brauche ich Select damit beim öffnen der Arbeitsmappe gleich die richtige Zelle angezeigt wird.

Gruß
fedjo
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo fedjo,

bei mir ging es, allso liegt es an Deiner Datei.
Das Du nicht die erste freie suchst. Ist Dir schon klar. Ansonstzen würdest Du ja mit Offset viwelleicht einen vorhandenen Wert überschreiben.

Gruß Hajo
0 Punkte
Beantwortet von theblackbird_ Mitglied (605 Punkte)
Moin,

Hajo hat da einen kleinen Tippfehler drin,
Range("B65536").End(xlUp).Offset(1, 0).Select

waere es wohl gewesen. (Zumindest fuer XLS-Dateien(bis XL2003). Bei xlsm-Dateien bzw. unter XL>=2007wuerde es dennoch funktionieren.)

Aber auch Dein Codeschnippsel aus der Frage ist nicht unbedingt falsch.
Er funktioniert nur dann nicht, wenn alle Zellen UNTER B2 leer sind.
Denn genau dann stellt Range("B2").End(xlDown) schon die LETZTE Zelle der Spalte B dar. Und dann kannst Du mit offset(1,0) halt nicht noch eine Zeile tiefer-> ergo: Fehler

Aber welche Zelle willst Du eigtl. GENAU selectieren. Nehmen wir mal folgende Werte in Spalte B an (LEER bedeutet dabei KEIN WERT):
B2=2
B3=4
B4=LEER
B5=8

Dein Codeschnippsel wuerde B4 selectieren.
Hajos Ansatz hingegen wuerde B6 selectieren.

Bevor Du jetzt aber Deine Entscheidung faellst, teste auch einmal was passiert, wenn B2 und B3 ebenso LEER sind (B5 aber noch einen Wert enthaelt.

bis hierhin erst einmal
TheBlackBird ®
0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hallo TheBlackBird,
alle Zellen UNTER B2 sind leer, mein Code funktioniert daher nicht.

Der Code:Range("B65536").End(xlUp).Offset(1, 0).Select
funktioniert ganau nach meiner Vorstellung.

Danke für euere Hilfe

Gruß
fedjo
...