VBA Excel Makro komplette Zeile löschen,wenn bestimmte Wörter enthalten

4 Antworten

Hab das lang nicht mehr gemacht, aber eine Array-Variable muss m.Erinnerung nach mit Variablenname(), also mit Klammern, angemeldet werden.


Britzcontrol  29.10.2014, 07:16

Ja, stimmt.

Beispiel 1
DIM Variab1(100)

Beispiel 2
DIM Variab2 (100,10)

Beispiel 3
DIM Variab3 (100,10,10)

Mit diesen dreifach indizierten Variablen habe ich - früher - viel und gerne gearbeitet.

Gruß aus Berlin

Iamiam  29.10.2014, 09:47
@Britzcontrol

danke, so langsam kommt die Erinnerung wieder.
und wenn man sie nur als Var() anmeldet, dann muss/kann man später mit
redim
die Dimensionen weiterhin als Zahlen oder durch bis dahin berechnete andere Variablen einstellen.

also bei mir klappts und er löscht auch die gesamte zeile. allerdings auch immer die 1. zeile. weil: er löscht alle zeilen die beim autofilter stehen bleiben. die 1. zeile dient allerdings als header zeile, also als träger der drop-down-listen.

trick: am anfang noch eine leere zeile mit

 Cells(1, 1).EntireRow.Insert (xlShiftDown)

einfügen

gruß, max.


Nopset 
Beitragsersteller
 28.10.2014, 22:16

Meinst du jetzt die allererste Zeile A1? Dort steht bei mir nämlich nichts drin, dass ich löschen möchte, eher weiter unten in der Tabelle. in Spalte A und B stehen Wörter, die ich nicht brauche und dadurch die ganze Zeile entfernen möchte. Irgendwie klappt das nicht :(

Viele Grüße

maximilianus7  28.10.2014, 22:43
@Nopset

du testest nur die spalte A auf die suchbegriffe.

also:

For i = LBound(arrSuchbegriff) To UBound(arrSuchbegriff)
     ActiveSheet.Columns("A").Replace arrSuchbegriff(i), "###@@@###", xlPart, MatchCase:=False
 Next i
 ActiveSheet.Columns("A").AutoFilter Field:=1, Criteria1:="*###@@@###*"

nochmals mit "B" wiederholen.

ich seh grad weiter oben sprichst du von allen (Spalten). dann halt eine schleife über die fraglichen spalten

gruß, max.

autofilter in VBA ist mir etwas suspekt. aber wenns geht: versuchs mal mit

activesheet.rows.delete

und zum schluss den autofilter wieder ausschalten.

gruß, max


Nopset 
Beitragsersteller
 28.10.2014, 16:40

Das habe ich versucht, geht auch nicht. Aber mein Fehler liegt an der Spalte "A", wie kann ich mich auf alle beziehen?

Iamiam  28.10.2014, 20:40
@Nopset

habs jetzt zwar nicht ausprobiert, aber wenn Du rows(..) , also in der Klammer, definierst, müsste es ebenfalls gehen!
Für mehrere ggf. als Schleife, aber da muss man aufpassen, weil sich die Laufzahl je nach Löschzustand verändert!

Versuche mal

ActiveSheet.Cells.EntireRow.Delete
Woher ich das weiß:Berufserfahrung – Programmierer

Nopset 
Beitragsersteller
 28.10.2014, 16:35

Ich glaube es funktioniert nicht , da ich Spalte A angegeben habe. Wie kann ich mich auf alle Spalten beziehen? Vielen Dank :)

Nopset 
Beitragsersteller
 28.10.2014, 16:39
@Suboptimierer

Das bedeutet alle Zeilen, ich meine die columns :)

Iamiam  28.10.2014, 20:34
@Nopset

entirerow heisst die "ganze Zeile" , also von vorn bis hinten.
und braucht natürlich einen Bezugspunkt, zB Activecell.entirerow.delete
oder
...Cells(...).entirerow.delete