Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1608to1612
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

Zwei Werte suchen

Zwei Werte suchen
15.02.2018 22:20:04
Andy
Ich habe dankenswerterweise den Code hier im Forum erhalten:
Sub Loeschen()
Dim Rafound As Range
With Worksheets("Tabelle3")
Set Rafound = .Cells.Find(Variable1, , xlFormulas, _
xlWhole, , xlNext)
If Not Rafound Is Nothing Then
.Rows(Rafound.Row).Delete
End If
End With
End Sub

Ist es möglich diesen Code entsprechend so umzuschreiben, dass er mir nach zwei Werten sucht?
Er soll zum einen den Wert 1 (Variable1) nur in der Spalte "M" suchen und danach soll er nach finden zusätzlich in Spalte D prüfen, ob die Zelle in M keinen Wert enthät. Nur dann soll er die gefundene Zeile löschen. findet er einen wert in D dann soll er weitersuchen und die nächsten Zeilen entspechend auf Gültigkeit der beiden Prüfvorgaben durchsuchen. sobald er eine Zeile findet die dem entspricht, nicht weitersuchen.

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Frage
15.02.2018 22:48:27
Peter(silie)
Hallo,
unten nicht getesteter Code:
Option Explicit
'nach einem treffer aufhören
Public Sub DeleteRow()
Dim ws As Worksheet
Dim rng As Range, c As Range
Dim row_ As Long
Dim Variable1 As String
Variable1 = "was auch immer"
Set ws = ThisWorkbook.Sheets("Tabelle3")
With ws
lROw = .Cells(.Rows.Count, 13).End(xlUp).Row
Set rng = .Range(.Cells(1, 13), .Range(lROw, 13))
Set c = rng.Find(Variable1, xlFormulas, xlWhole, xlNext)
If Not c Is Nothing Then
fa = c.Address
Do
If .Cells(c.Row, 4).Value = vbNullString Then
c.EntireRow.Delete
Else
Set c = rng.FindNext(c)
End If
Loop While Not c Is Nothing And c.Address  fa
End If
End With
End Sub
'Komplettdurchlauf
Public Sub DeleteRows()
Dim ws As Worksheet
Dim rng As Range, c As Range
Dim row_ As Long, fa As String
Dim indizes() As Long, n As Long
Set ws = ThisWorkbook.Sheets("Tabelle3")
With ws
lROw = .Cells(.Rows.Count, 13).End(xlUp).Row
Set rng = .Range(.Cells(1, 13), .Range(lROw, 13))
Set c = rng.Find("Suchwert", xlFormulas, xlWhole, xlNext)
If Not c Is Nothing Then
fa = c.Address
Do
If .Cells(c.Row, 4).Value = vbNullString Then
ReDim Preserve indizes(n)
indizes(n) = c.Row
n = n + 1
End If
Set c = rng.FindNext(c)
Loop While Not c Is Nothing And c.Address  fa
End If
End With
End Sub
Private Sub Execute(ByRef indizes As Variant)
Dim i As Long
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Tabelle3")
With ws
For i = UBound(indizes) To LBound(indizes) Step -1
.Cells(i, 1).EntireRow.Delete
Next i
End With
End Sub

Anzeige
oh falscher betreff... sorry leute
15.02.2018 22:49:06
Peter(silie)

AW: oh falscher betreff... sorry leute
15.02.2018 23:18:01
Andy
Ich glaube da ist was nicht richtig ;) Sind alle Variablen definiert?
AW: oh falscher betreff... sorry leute
16.02.2018 01:06:26
Werner
Hallo Andy,
Option Explicit
Sub Loeschen()
Dim raFund As Range, Variable1 As Variant, firstAddress As String
With Worksheets("Tabelle3")
'Suchbegriff steht in Zelle A1
Variable1 = .Cells(1, 1).Value
Set raFund = .Range("M1:M" & .Cells(.Rows.Count, 13).End(xlUp).Row) _
.Find(Variable1, , xlValues, , xlWhole)
If Not raFund Is Nothing Then
firstAddress = raFund.Address
Do
If .Cells(raFund.Row, 4) = "" Then
.Rows(raFund.Row).Delete
Exit Do
End If
Set raFund = .Range("M1:M" & .Cells(.Rows.Count, 13).End(xlUp).Row).FindNext(raFund)
Loop While Not raFund Is Nothing And raFund.Address  firstAddress
Else
MsgBox "Suchbegriff nicht vorhanden."
End If
End With
Set raFund = Nothing
End Sub
Gruß Werner
Anzeige
AW: oh falscher betreff... sorry leute
16.02.2018 09:45:59
Andy
Hallo Werner, der Code funktioniert super. Danke dafür.
Eine Kleinigkeit noch. Die Msgbox wird nicht aufgerufen. Habe schon die ( ) klammern eingesetzt, aber die msgbox kommt nur, wenn ich sie nach End if und vor end with setze... Muss dort die Ablaufroutine rein, die kommen soll, wenn der wert nicht gefunden wurde?
Nachfrage
16.02.2018 15:20:29
Werner
Hallo Andy,
aber sicher wird die aufgerufen. Aber nur dann, wenn dein Suchbegriff (Wert in der Variablen "Variable1") in Spalte M nicht vorhanden ist.
Ich nehme mal an, du meinst, dass eine Messagebox aufgehen soll, wenn zwar der Suchbegriff in Spalte M vorhanden ist, aber dazu passend keine leere Zelle in der entsprechenden Zeile in Spalte D gefunden wurde.
Sehe ich das so richtig?
Gruß Werner
Anzeige
Vermutlich...
16.02.2018 15:35:25
Werner
Hallo Andy,
...meinst du das so:
Option Explicit
Sub Loeschen()
Dim raFund As Range, Variable1 As Variant
Dim firstAddress As String, boTreffer As Boolean
With Worksheets("Tabelle3")
'Suchbegriff steht in Zelle A1
Variable1 = .Cells(1, 1).Value
Set raFund = .Range("M1:M" & .Cells(.Rows.Count, 13).End(xlUp).Row) _
.Find(Variable1, , xlValues, , xlWhole)
If Not raFund Is Nothing Then
firstAddress = raFund.Address
Do
If .Cells(raFund.Row, 4) = "" Then
.Rows(raFund.Row).Delete
boTreffer = True
Exit Do
End If
Set raFund = .Range("M1:M" & .Cells(.Rows.Count, 13).End(xlUp).Row).FindNext(raFund)
Loop While Not raFund Is Nothing And raFund.Address  firstAddress
Else
MsgBox "Suchbegriff """ & Variable1 & """ ist in Spalte M nicht vorhanden."
Exit Sub
End If
End With
If Not boTreffer Then
MsgBox "Zum Suchbegriff """ & Variable1 & """ gibt es in Spalte D keine leeren Zellen."
End If
Set raFund = Nothing
End Sub
Gruß Werner
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige