VBA .Delete Befehl funktioniert nicht - könnt Ihr mir helfen?

2 Antworten

Uff. Ich weiß gar nicht genau, woran es liegt, aber dein Code ist sehr ungewohnt zu lesen. Vielleicht liegt es daran, dass ich kein With-Fan bin oder daran, dass die deutschen Umlaute etwas ins Auge stechen.

Was ist denn für dich ein Datensatz? Eine ganze Zeile? Dann versuche folgendes:

.Cells(...).EntireRow.Delete

ging mir auch so. hat nerst mal viele Fragen bzgl. der Aktualität  meines Wissens aufgeworfen.

Aber Deine Lösung ist die einfachste!, DH!

0

Mich wundert, dass da überhaupt was gelöscht wird. Aber vllt hab ich etliches an Neuerungen in VBA nicht mitgekriegt. Wusste zB nicht, dass Cells(2, "A") zu gehen scheint (nur als Beispiel), ich hätte das immer entweder als Celle(2, 1) oder als Range("A2") geschrieben.

oder With Tabelle1 früher(?) Worksheets("Tabelle1")

Für die Vereinigung von Teilbereichen (auch Einzelzellen) gibts die Funktion Union(erster Bereich, weitere Bereiche), für die Definition eines Bereichs aus 2 Zellen würde ich in Deinem Fall

Set Löschen = Range(.Range("A2"), .Range("A2").end(xlup)) verwenden (wobei ich nicht weiß, was das soll, nach oben gibts ja nur noch A1.

Und willst Du nicht  end(xltoright)?

Du definierst set löschen 2x, nur eine Definition kann gültig sein.

Willst Du wirklich die ZELLEN als solche löschen? (Ah ja, kapiers grade erst)

Der Befehl zum Daten/Formate etc zu entfernen unter Erhaltung der Zelle ist

Cells(...).clearcontents, .clearformats, .clearcomments, .clear (letzteres löscht alles.

der Befehlsblock kann so formuliert werden:

If Not löschen Is Nothing Then

.Range(löschen, löschen.end(xltoright)).Delete

ListBox1.Clear


nur als Anregung, habs nicht ausprobiert.

Set Löschen = Range(.Range("A2"), .Range("A2").end(xlup)) verwenden (wobei ich nicht weiß, was das soll, nach oben gibts ja nur noch A1. 

Es soll nicht von A2 nach oben markiert, durchsucht und gelöscht werden. Die Markierung soll sich von A2 bis zur letzten beschriebenen Zelle ausdehnen. Deswegen 

Set löschen = .Range(.Cells(2, "A"), .Cells(.Rows.Count, "A").End(xlUp))

Es wird die gesamte Anzahl an Zeilen des Tabellenblatts mit einem Shift nach oben durchstöbert.

In gewohnter Syntax:

Set rLoeschen = Range(Tab1.Range("A2"), Tab1.Range("A" & Tab1.Rows.Count").End(xlUp))

0

cells(zeilenummer, "spaltenbuchstabe") ging meines wissens schon immer, garantiert seit office 2003.

0

Was möchtest Du wissen?