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

0
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.

0

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 
Fragesteller
 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

0
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.

0

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 
Fragesteller
 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?

0
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!

0

Versuche mal

ActiveSheet.Cells.EntireRow.Delete
Woher ich das weiß:Berufserfahrung – Programmierer
Nopset 
Fragesteller
 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 :)

0
Nopset 
Fragesteller
 28.10.2014, 16:39
@Suboptimierer

Das bedeutet alle Zeilen, ich meine die columns :)

0
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

1