Microsoft Excel

Herbers Excel/VBA-Archiv

Makro vereinfachen | Herbers Excel-Forum


Betrifft: Makro vereinfachen von: Jesse James
Geschrieben am: 02.01.2012 13:31:20

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 :)

  

Betrifft: AW: Makro vereinfachen von: Reinhard
Geschrieben am: 02.01.2012 13:44:05

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


  

Betrifft: AW: Makro vereinfachen von: Jesse James
Geschrieben am: 02.01.2012 21:36:58

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!


  

Betrifft: AW: Makro vereinfachen von: hary
Geschrieben am: 02.01.2012 21:44:57

Hallo

nimm mal.


Rows(Zei).Delete
gruss hary


  

Betrifft: AW: oder meinst Du von: hary
Geschrieben am: 02.01.2012 21:53:53

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


  

Betrifft: AW: oder meinst Du von: Jesse James
Geschrieben am: 02.01.2012 23:41:39

Danke, jetzt klappt das ganze einwandfrei. Vielen Dank :)


Beiträge aus den Excel-Beispielen zum Thema "Makro vereinfachen"