Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro vereinfachen

Forumthread: Makro vereinfachen

Makro vereinfachen
Jesse
Guten Tag,
da mir gestern schon in diesem Forum vorbildlich geholfen wurde, habe ich noch eine Frage bzgl eines Makros
Habe folgendes programmiert:
Sub SuchenundZerstören()
Range("A1").Select
Do Until ActiveCell.Value = ""
If Instr(1,ActiveCell.Value, "a") _
Then Selection.EntireRow.Delete _
Else: ActiveCell.Offset(1, 0).Select
Loop
Range("A1").Select
Do Until ActiveCell.Value = ""
If Instr(1,ActiveCell.Value, "b") _
Then Selection.EntireRow.Delete _
Else: ActiveCell.Offset(1, 0).Select
Loop
End Sub

Das funktioniert ja auch alles wunderbar, aber dann muss ich für jedes Kriterium nach dem ich suchen will, einen "5-Zeiler" schreiben, das muss doch auch einfacher gehen, das ich einfach schon im ersten Block alle Kriterien angeben kann?
Vielen Dank für jede Hilfe :)
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Makro vereinfachen
02.01.2012 13:44:05
Reinhard
Hallo Jesse,

Option Explicit
Sub SuchenundZerstören()
Dim arrSuch, intS As Integer, Zei As Long
arrSuch = Array("a", "b", "c", "d", "e")
For Zei = 1 To Cells(Rows.Count, 1).End(xlUp).Row
For intS = LBound(arrSuch) To UBound(arrSuch)
If Cells(Zei, 1).Value = arrSuch(intS) Then
Rows(intS).Delete
End If
Next intS
Next Zei
End Sub

Gruß
Reinhard
Anzeige
AW: Makro vereinfachen
02.01.2012 21:36:58
Jesse
Danke für die promte Antwort. Habe dein Makro in ein Modul eingefügt, allerdings bringt Excel die Fehlermeldung "1004" und zeigt dabei auf folgende Zeile: Rows(intS).Delete.
Vielen Dank nochmal!
AW: Makro vereinfachen
02.01.2012 21:44:57
hary
Hallo
nimm mal.

Rows(Zei).Delete
gruss hary
Anzeige
AW: oder meinst Du
02.01.2012 21:53:53
hary
hallo nochmal
oder ist der Buchstabe in der Mitte.

Dim arrSuch, intS As Integer, Zei As Long
arrSuch = Array("a", "b", "c", "d", "e")
For Zei = 1 To Cells(Rows.Count, 1).End(xlUp).Row
For intS = LBound(arrSuch) To UBound(arrSuch)
If InStr(1, Cells(Zei, 1).Value, arrSuch(intS)) Then
Rows(Zei).Delete
End If
Next intS
Next Zei

gruss hary
Anzeige
AW: oder meinst Du
02.01.2012 23:41:39
Jesse
Danke, jetzt klappt das ganze einwandfrei. Vielen Dank :)

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige