Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1224to1228
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro - Bestimmte Anzahl Zellen löschen, wenn...

Makro - Bestimmte Anzahl Zellen löschen, wenn...
Ari
Hallo Forum,
ich bin nicht gerade ein Makro-Experte und habe auch deshalb viele Beiträge in diesem Forum gelesen aber noch nicht das gefunden, was mir helfen würde.
Ich muss regelmäßig aus einer per SQL generierten Exceltabelle bestimmte Zeilen löschen. In dieser Exceltabelle sind Zeilen und Spalten teilweise ausgeblendet und es gibt auch verbundene Zellen.
Ich suche nun von unten begonnen die erste Zeile, die in Spalte B das Wort "Neu" enthält. Diese Zeile + die 9 darüberliegenden Zeilen muss ich dann markieren und anschließend löschen.
Dann suche ich die nächste darüberliegende Zeile, die in Spalte B das Wort "Neu" enthält und markiere diese Zeile + die 9 darüberliegenden Zeilen und lösche diese.
Das dauert bei 5.000 Zeilen mit manueller Löschung echt lange. Kann mir da vielleicht jemand mit einem Makro helfen?
Vielen Dank und schönen Abend
Ari
AW: Makro - Bestimmte Anzahl Zellen löschen, wenn...
12.08.2011 22:30:11
Josef

Hallo Ari,
ungetestet!
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub deletNEU()
  Dim rng As Range, rngDel As Range
  Dim strFirst As String
  
  With ActiveSheet
    Set rng = .Columns(2).Find(What:="Neu", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
    If Not rng Is Nothing Then
      strFirst = rng.Address
      Do
        If rng.Row > 9 Then
          If rngDel Is Nothing Then
            Set rngDel = rng.Offset(-9, 0).Resize(10, 1).EntireRow
          Else
            Set rngDel = Union(rngDel, rng.Offset(-9, 0).Resize(10, 1).EntireRow)
          End If
        End If
        Set rng = .Column(2).FindNext(rng)
      Loop While Not rng Is Nothing And strFirst <> rng.Address
    End If
  End With
  
  If Not rngDel Is Nothing Then rngDel.Delete
  
  Set rng = Nothing
  Set rngDel = Nothing
End Sub



« Gruß Sepp »

Anzeige
AW: Makro - Bestimmte Anzahl Zellen löschen, wenn...
12.08.2011 22:51:34
Ari
Hallo Sepp,
wow, dass ging ja super schnell mit einer Antwort. Ich hab das Makro eingebunden, aber leider werden wohl die Zeilen noch nicht gelöscht. Das muss ich mir wohl mal genauer ansehen.
Trotzdem erst mal vielen Dank für die abendliche/nächstliche Hilfe :-). Viele Grüße Ari
AW: Makro - Bestimmte Anzahl Zellen löschen, wenn...
12.08.2011 23:05:19
Josef

Hallo Ari,
wenn neben "neu" auch noch anderer Text in den gesuchten Zellen steht,
dann ändere im Code "LookAt:=xlWhole" zu "LookAt:=xlPart".

« Gruß Sepp »

Anzeige
AW: Makro - Bestimmte Anzahl Zellen löschen, wenn...
12.08.2011 23:34:50
Ari
Hallo Sepp,
danke für den Tipp, in der Zelle steht aber nur das Wort "Neu", da brauch ich keine Codeanpassung vorzunehmen.
Vielleicht ist es ersichtlicher, wenn ich eine abgespeckte Version der Datei hochlade. Ich hab es noch nicht hinbekommen.
Danke trotzdem für die Geduld. Viele Grüße Ari
https://www.herber.de/bbs/user/76153.xlsx
AW: Makro - Bestimmte Anzahl Zellen löschen, wenn...
12.08.2011 23:41:23
Josef

Hallo Ari,
ja ja, wieder mal diese sch... verbundenen Zellen, was gefällt euch daran bloß so?
So geht's.
Sub deletNEU()
  Dim rng As Range, rngDel As Range
  Dim strFirst As String
  
  With ActiveSheet
    Set rng = .Range("B:D").Find(What:="Neu", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
    If Not rng Is Nothing Then
      strFirst = rng.Address
      Do
        If rng.Row > 9 Then
          If rngDel Is Nothing Then
            Set rngDel = rng.Offset(-9, 0).Resize(10, 1).EntireRow
          Else
            Set rngDel = Union(rngDel, rng.Offset(-9, 0).Resize(10, 1).EntireRow)
          End If
        End If
        Set rng = .Range("B:D").FindNext(rng)
      Loop While Not rng Is Nothing And strFirst <> rng.Address
    End If
  End With
  
  If Not rngDel Is Nothing Then rngDel.Delete
  
  Set rng = Nothing
  Set rngDel = Nothing
End Sub



« Gruß Sepp »

Anzeige
AW: Makro - Bestimmte Anzahl Zellen löschen, wenn...
12.08.2011 23:50:30
Ari
Hallo Sepp,
lach*...was den Programmierern daran gefällt, frage ich mich auch!
Sensationell...du hast es gelöst! Mein Retter!
Vielen Dank, Grüße aus Muc und Gute Nacht.
Ari

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige