Clever-Excel-Forum

Normale Version: Makro - Mehrfach "letzte beschriebene Zeile" nutzen & mehrere Spalten löschen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich habe gleich 2 Themen in einer Makro, die mich schon längere Zeit beschäftigen und nicht gelöst kriege. Ich hoffe daher, hier ggf. etwas Hilfe zu bekommen. Ich habe eine größere Makro, die 2 Dateien von mir aufbereitet und in eine andere Datei kopieren. Dabei geschehen folgende Themen:

1. Ich benutze in der Makro folgende Funktion, um die letzte beschriebene Zeile zu definieren: 

Dim letztezeile As Long
letztezeile = Cells.SpecialCells (xlcellTypeLastCell).Row

Die Funktion setze ich direkt am Anfang, im Laufe der VBA lösche ich jedoch Zeilen und will dann die "neue letzte Zeile" definieren und nutze o.g. Funktion erneut, dann jedoch mit einem anderen Namen (z.B. letztezeile2), das funktioniert jedoch nicht. Es kommt zwar keine Fehlermeldung, es wird aber dennoch die Zeilenanzahl aus der ersten Funktion übernommen. Habt ihr da eine Idee?

2. Am Anfang will ich mehrere Spalten gleichzeitig löschen. Dafür steht in der Makro folgendes:

Range("B:B, D:D, H:H, M:M").Delete

Die VBA stoppt mit folgender Fehlermeldung: Laufzeitfehler '1004': Die Methode 'Range' für das Objekt '_Global' ist fehgeschlagen.

Wenn ich dann auf Debuggen, und direkt F5 oder F8 drücke, funktioniert alles einwandfrei. Woran kann das liegen? 

Sind das typische Fehler, die jemand so direkt klären kann oder braucht ihr Testdaten? Müsste die sehr anpassen, aber würde ich machen, wenn jemand diese benötigt.

Danke euch für die Hilfe,

Sunny
Hallo,

zu Deinen Fragen gibt es eine ganze Reihe möglicher Ursachen:

Zu 1: Verwende alternativ z. B.
Code:
Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row 'letzte benutzte Zeile in Spalte A für Tabelle1 - Tabellen Namen anpassen

Gründe für die gleiche Zahl bei der erneuten Suche der letzten Zeile können nicht ganz leere Zellen sein, - also noch Leerzeichen vorhanden sein oder Du hast mehrere Tabellenblätter und legst in Deinem Befehl nicht fest, in welchem Tabellenblatt die Suche erfolgen soll, so wie Du es in Deinem Post auch geschrieben hast:

Zitat:Dim letztezeile As Long                   'Dim letztezeile2 As Long auch vorhanden???

letztezeile = (???).Cells.SpecialCells (xlcellTypeLastCell).Row
Vielleicht hast Du auch einen Schreibfehler bei Deinen Variablen im Code


Zu 2.
Die von Dir genannte Schreibweise funktioniert schon. Warum steht nicht davor, in welcher Tabelle die Löschung erfolgen soll, oder hast Du nur ein Blatt in Deiner Datei?
Nach dem Löschen sind die Spalten logischerweise wieder vorhanden, allerdings ohne Inhalt, da die gelöschten Spalten einfach wieder "aufgefüllt" werden von Excel. Wenn Du die Werte darin löschen möchtest und die Spalten nicht mehr sehen möchtest musst Du erst löschen (da reicht aber auch der Befehl: .ClearContents) und anschließend ausblenden.

Grüße

Norbert