Zeile löschen die dem Kriterium entspricht

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Zeile löschen die dem Kriterium entspricht von: Drazen
Geschrieben am: 02.03.2005 00:11:08

Hallo nochmal,

hab jetzt einen neuen Thread eröffnet da dies vieleicht auch anderen Suchenden helfen könnte.
Ich möchte eine ganze Zeile löschen die dem SuchKriterium entspricht:

Dim s1 As Long
Dim l1 As Integer
l1 = lblKey.Caption
With Worksheets("BESTELLUNG").Range("AB:AB")
s1 = .Find(what:=l1, lookat:=xlWhole, LookIn:=xlValues)
Rows(s1).Delete
End With
End If

Habe es so versucht, klappt aber gar nicht, gelöscht wird zwar eine Zeile aber immer die Letzte und nicht die in der sich das zu suchende l1 befindet, wer kann kurz helfen?

Grüsse
Drazen

Bild


Betrifft: AW: Zeile löschen die dem Kriterium entspricht von: Bert
Geschrieben am: 02.03.2005 00:31:56

Hi,

abgesehen davon, dass da ein End If zuviel ist, sollte es gehen, wenn in lblKey ein
numerischer Wert steht. Besser, du konvertierst ihn. Außerdem brauchst du eine
Fehlerbehandlung, falls nichts gefunden wird.


Sub loeschen()
Dim s1 As Long
Dim l1 As Long
l1 = CLng(lblKey)
With Worksheets("BESTELLUNG").Range("AB:AB")
On Error GoTo BERT
s1 = .Find(what:=l1, lookat:=xlWhole, LookIn:=xlValues)
Rows(s1).Delete
End With
Exit Sub
BERT:
MsgBox l1 & " wurde nicht gefunden!     "
End Sub


Bert


Bild


Betrifft: AW: Zeile löschen die dem Kriterium entspricht von: Drazen
Geschrieben am: 02.03.2005 00:45:46

Hi Bert,
ja an der Konvertierung lag es tatsächlich, jetzt klappt es top, wenn wir schon dabei sind ( ich dachte du wärst schon ins Bett, aber hier schläft anscheinend nie jemand :) )
könnte ich noch was zusätzliche erfahren?
Them sind SpinButtons, ich möchte mittels SpinButton innerhalb einer mit Autofilter gefilterten Tabelle die Daten blättern.
Bisher habe ich es so versucht:

Sub UserForm_Initialize()
If Rows.Hidden = False Then
iSpin = 2
lblArtikel = Cells(iSpin, 4)
txtMenge = Cells(iSpin, 23)
End Sub


Private Sub SpinButton1_SpinUp()
    iSpin = iSpin - 1
    If iSpin < 2 Then
    iSpin = Cells(Rows.Count, 1).End(xlUp).Row
    End If
    If Rows.Hidden = False Then
    lblArtikel = Cells(iSpin, 4)
    txtMenge = Cells(iSpin, 23)
    End If
End Sub



Private Sub SpinButton1_Spindown()
    iSpin = iSpin + 1
    If iSpin > Cells(Rows.Count, 1).End(xlUp).Row Then
    iSpin = 2
    End If
    If Rows.Hidden = False Then
    lblArtikel = Cells(iSpin, 4)
    txtMenge = Cells(iSpin, 23)
    End If
End Sub


Klappt aber nicht so besonders, es werden zwar nur die sichtbaren Datensätze angezeigt, geblättert wird aber durch alle, also man muss 10x klicken um ans nächste zu kommen, gibts da eine andere Lösung, verspreche ich werde heute nicht mehr nörgeln.

Grüsse
Drazen


Bild


Betrifft: AW: Sorry, funzt immer noch nicht von: Drazen
Geschrieben am: 02.03.2005 00:52:19

Hi Bert,

war wohl etwas zu voreilig, jetzt wird immer der letze Datensatz gelöscht, ich checks nicht...

Grüsse
Drazen


Bild


Betrifft: AW: Sorry, funzt immer noch nicht von: Bert
Geschrieben am: 02.03.2005 00:57:10

Hi,

was steht in lblKey? Ich kann das nicht nachvollziehen.

Bert


Bild


Betrifft: AW: Sorry, funzt immer noch nicht von: Drazen
Geschrieben am: 02.03.2005 01:05:15

Hi,

na die Zahl aus dem letzten Thread, ZufallsZahl.

Keinen Schimmer mehr, meine Methode Try and learn funktioniert hier nicht...
Grüsse
Drazen


Bild


Betrifft: AW: Sorry, funzt immer noch nicht von: MichaV
Geschrieben am: 02.03.2005 10:02:23

Moin Drazen,

ich misch mich mal wieder ein. Probier mal:

on Error goto Bert
s1 = Range("AB:AB").Find(what:=l1, lookat:=xlWhole, LookIn:=xlValues).Row
Rows(s1).Delete
DoEvents
'bis hier die erste Zeile gefunden und gelöscht
'nun die nächsten Zeilen finden und löschen
While 1 = 1 'ist zwar etwas "hart", aber durch Berts Fehlerroutine klappts super.
Rows(Range("A:A").FindNext.Row).Delete
Wend
Exit Sub

Bert:
'Wenn Du noch einen Zähler für die Anzahl der gelöschten Zeilen einbaust kannst Du die Ausgabe der MsgBox verhindern.


Bild


Betrifft: AW: Sorry, funzt immer noch nicht von: MichaV
Geschrieben am: 02.03.2005 10:06:51

Besser:

On Error GoTo BERT

Dim blnGelöscht As Boolean

s1 = Range("A:A").Find(what:=l1, lookat:=xlWhole, LookIn:=xlValues).Row
Rows(s1).Delete
blnGelöscht = True
While 1 = 1
Rows(Range("A:A").FindNext.Row).Delete
Wend
Exit Sub
BERT:
If Not blnGelöscht Then MsgBox l1 & " wurde nicht gefunden! "


Gruß!


Bild


Betrifft: AW: Zeile löschen die dem Kriterium entspricht von: Volker
Geschrieben am: 02.03.2005 09:50:26

Hallo Drazen,

Du muß deiner Variablen s1 schon einen Zeilenindex zuweisen und kein Rangeobjekt oder so was. Ich wette, wenn Du Deinen Code mal durchsteppst, ist s1 leer oder jedenfalls keine Ganzzahl, sonder eben genau der Inhalt der Zelle, nach dem Du gesucht hast.
Versuchs mal damit:


Sub s()
Dim s1 As Long
Dim l1 As Integer
l1 = lblKey.Caption
'With Worksheets("BESTELLUNG").Range("AB:AB")
s1 = Columns("AB").Find(what:=l1, lookat:=xlWhole, LookIn:=xlValues).Row
Rows(s1).Delete
'End With
End Sub


Gruß
Volker


Bild


Betrifft: AW: Zeile löschen die dem Kriterium entspricht von: Drazen
Geschrieben am: 02.03.2005 10:56:35

Hi Volker,

genau darin war der Fehler anscheinend, die Variable s1 braucht doch einen ZeilenIndex um zu wissen welche Zeile genau gemeint ist, funktioniert wenn alle Daten sichtbar sind UND wenn ein Autifilter gesetzt ist.

Vielen Dank.

Grüsse
Drazen


Bild


Betrifft: Na also... von: Volker
Geschrieben am: 02.03.2005 11:10:18

Danke für die Rückmeldung
Ich dachte schon, Du hättest meinen Beitrag gar nicht gelesen und wollte schon aufgeben.

Eine Fehlerroutine solltest Du aber tatsächlich noch einbauen, das hatte ich vergessen. Sonst hängt sich das Makro auf, wenn die Suche ins Leere geht:


Sub s()
Dim s1 As Long
Dim l1 As Integer
l1 = lblKey.Caption
On Error GoTo fehler
s1 = Columns("AB").Find(what:=l1, lookat:=xlWhole, LookIn:=xlValues).Row
Rows(s1).Delete
Exit Sub
fehler:
MsgBox "Suchtext nicht gefunden"
End Sub


Gruß
Volker


Bild


Betrifft: AW: Na also... von: Drazen
Geschrieben am: 02.03.2005 11:17:00

Hi Volker,

ein Fehler ist total unwahrscheinlich da jeder dieser Datensätze eine Zahl verpasst bekommt und ich diese ja in die UF mit einlese, wenn keine Zahl dabei ist bekomme ich den zu löschenden Datensatz gar nicht angezeigt, vielen Dank noch mal.
Kennst du dich mit SpinButtons aus?

Grüsse
Drazen


Bild


Betrifft: AW: Na also... von: Volker
Geschrieben am: 02.03.2005 12:31:47

Hallo Drazen,

hab im Moment nicht viel Zeit.
schau Dir mal den Anhang an, da ist ein Bsp. drin.
Vielleicht hilft Dir das schon weiter

https://www.herber.de/bbs/user/19076.xls

Bis später
Volker


Bild


Betrifft: AW: Danke Dir... o.T von: Drazen
Geschrieben am: 02.03.2005 12:35:44




 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zeile löschen die dem Kriterium entspricht"