Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
600to604
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
600to604
600to604
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Datensatz löschen

Datensatz löschen
19.04.2005 09:34:49
Andreas
Hallo Leute,
ich benutze folgenden Code, um einen Datensatz im Arbeitsblatt "SerienNr" in Spalte B auszusuchen (mit einer Inputbox), und zu löschen, wenn in Spalte C "dBa" steht.
Die Seriennummer kann 2-fach vorkommen, aber nur der Datensatz mit dBa soll gelöscht werden.
Das ganze funktioniert soweit recht gut, wenn der Datensatz mit dBa vor dem Datensatz ohne dBa steht.
Ist es umgekehrt, wird der Datensatz nicht gelöscht.
Gibt es dafür auch eine Lösung?

Sub Andreas()
Dim Mldg, Titel, Wert, Zelle
Mldg = "Serien-Nr eingeben"
Titel = "Datesatz löschen"
Wert = InputBox(Mldg, Titel)
With Worksheets("SerienNr").Columns(2)
Set Zelle = .Find(Wert, LookIn:=xlValues, LookAt:=xlWhole)
If Not Zelle Is Nothing And Zelle(1, 2) = "dBa" Then
Rows(Zelle(1, 2).Row).Delete Shift:=xlUp
End If
End With
End Sub

Im Voraus schon mal herzlichen Dank.
Gruß Andreas

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datensatz löschen
19.04.2005 10:04:40
Ramses
Hallo
probier mal

Sub Andreas()
Dim Mldg, Titel, Wert, Zelle
Mldg = "Serien-Nr eingeben"
Titel = "Datesatz löschen"
Wert = InputBox(Mldg, Titel)
With Worksheets("SerienNr").Columns(2)
Set Zelle = .Find(Wert, LookIn:=xlValues, LookAt:=xlWhole)
If Not Zelle Is Nothing And Zelle.Offset(1, 2) = "dBa" Then
Rows(Zelle(1, 2).Row).Delete Shift:=xlUp
End If
End With
End Sub

Wobei ich nicht weiss ob das "Offset(1, 2)" nun korrekt ist. Ich habe es einfach mal deinem code so entnommen.
Es wird geprüft ob die zelle darunter !!! und 2 Spalten Rechts von der gefundenen Zelle der Begriff vorkommt. Steht dîese Zelle in der gleichen Zelle, ändere die 1 in 0
Gruss Rainer
Anzeige
AW: Datensatz löschen
19.04.2005 10:33:51
Andreas
Hallo Rainer,
funktioniert leider nicht.
Der zu löschende Datensatz ist oft etliche Zeilen von dem anderen Datensatz entfernt.
Wenn ich das recht verstanden habe, funktioniert der Code dann sowiso nicht.
Gibt es noch eine andere Lösung?
Ich möchte eigentlich nur die Zeile Löschen, in der die gesuchte Seriennummer in Spalte B, und dBa in Spalte C steht.
Gruß Andreas
AW: Datensatz löschen
19.04.2005 11:07:21
Ramses
Hallo
dann ändere die Zeile
Rows(Zelle(1, 2).Row).Delete Shift:=xlUp
in
Rows(Zelle.Row).Delete Shift:=xlUp
Gruss Rainer
AW: Datensatz löschen
19.04.2005 11:50:13
Andreas
Hallo Rainer,
geht immer noch nicht.
Jetzt löscht es mir den Datensatz, in dem nicht dBa steht, wenn dieser im Arbeitsblatt vor dem Datensatz mit dBa kommt.
Gibt es mit VBA eine Möglichkeit, eine Zeile zu suchen, in der in Spalte B eine bestimmte Nummer und in Spalte C dBa steht, und diese Zeile dann zu löschen?
Gruß Andreas
Anzeige
AW: Datensatz löschen
19.04.2005 14:04:18
Andreas
Hallo Rainer,
geht immer noch nicht.
Jetzt löscht es mir den Datensatz, in dem nicht dBa steht, wenn dieser im Arbeitsblatt vor dem Datensatz mit dBa kommt.
Gibt es mit VBA eine Möglichkeit, eine Zeile zu suchen, in der in Spalte B eine bestimmte Nummer und in Spalte C dBa steht, und diese Zeile dann zu löschen?
Gruß Andreas
AW: Datensatz löschen
19.04.2005 15:13:41
WernerB.
Hallo Andreas,
wie gefällt Dir das?

Sub Andreas()
Dim Zelle As Range, _
Mldg As String, Titel As String, Wert As String, fiAd As String, _
laR As Long, _
Pruef As Boolean
Mldg = vbCr & vbCr & vbCr & "Serien-Nr. eingeben:"
Titel = "Datensatz löschen"
Wert = InputBox(Mldg, Titel)
If Wert = "" Then
MsgBox "Keine Eingabe !" & vbCr & vbCr & "Makro-Abbruch !", 16, _
"Dezenter Hinweis für " & Application.UserName & ":"
Exit Sub
End If
laR = Worksheets("SerienNr").Cells(Rows.Count, 2).End(xlUp).Row
With Worksheets("SerienNr").Range("B1:B" & laR)
Set Zelle = .Find(What:=Wert, After:=Worksheets("SerienNr").Range("B" & laR), LookAt:=xlWhole)
If Not Zelle Is Nothing Then
If Zelle.Offset(0, 1).Text = "dBa" Then
Rows(Zelle.Row).Delete
Else
fiAd = Zelle.Address
Do
Set Zelle = .FindNext(Zelle)
If Not Zelle Is Nothing Then
If Zelle.Address <> fiAd Then
If Zelle.Offset(0, 1).Text = "dBa" Then
Rows(Zelle.Row).Delete
MsgBox "Datensatz '" & Wert & "' mit 'dBa' wurde gelöscht !", 64, _
"Dezenter Hinweis für " & Application.UserName & ":"
Pruef = True
Exit Do
End If
End If
End If
Loop While Not Zelle Is Nothing And Zelle.Address <> fiAd
End If
If Pruef = False Then
MsgBox "Datensatz '" & Wert & "' mit 'dBa' nicht gefunden !", 64, _
"Dezenter Hinweis für " & Application.UserName & ":"
End If
Else
MsgBox "Datensatz '" & Wert & "' nicht gefunden !", 64, _
"Dezenter Hinweis für " & Application.UserName & ":"
End If
End With
End Sub

Viel Erfolg wünscht
WernerB.
P.S.: Dieses Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter !
Anzeige
AW: Datensatz löschen
19.04.2005 15:37:12
Andreas
Hallo Werner,
ist genau das, was ich gesucht habe, funktioniert absolut einwandfrei.
Leider verstehe ich den Code überhaupt nicht.
Könntest du eventuell noch ein paar komentare einfügen, die den Code für mich etwas verständlicher machen?
Wenn du keine Zeit dafür hast, ist auch nicht so schlimm, funktioniert ja einwandfrei.
Das Forum ist absolut Spitze, allen die mir geholfen haben
Vielen Dank
Gruß aus dem Allgäu Andreas.
AW: Datensatz löschen
20.04.2005 08:57:26
WernerB.
Hallo Andreas,
damit die Meldungen auch stimmen, habe ich das Makro entsprechend modifiziert:

Sub Andreas()
Dim Zelle As Range, _
Mldg As String, Titel As String, Wert As String, fiAd As String, _
Tx0 As String, Tx1 As String, Tx2 As String, Tx As String, _
laR As Long, _
Hinw As Byte
Mldg = vbCr & vbCr & vbCr & "Serien-Nr. eingeben:"
Titel = "Datensatz löschen"
Wert = InputBox(Mldg, Titel)
If Wert = "" Then
MsgBox "Keine Eingabe !" & vbCr & vbCr & "Makro-Abbruch !", 16, _
"Dezenter Hinweis für " & Application.UserName & ":"
Exit Sub
End If
laR = Worksheets("SerienNr").Cells(Rows.Count, 2).End(xlUp).Row
With Worksheets("SerienNr").Range("B1:B" & laR)
Set Zelle = .Find(What:=Wert, After:=Worksheets("SerienNr").Range("B" & laR), LookAt:=xlWhole)
If Not Zelle Is Nothing Then
'Serien-Nr. wurde gefunden
If Zelle.Offset(0, 1).Text = "dBa" Then
'In der Nachbarzelle (Spalte C) steht "dBa"
Hinw = 1
Rows(Zelle.Row).Delete
Else
'In der Nachbarzelle (Spalte C) steht nicht "dBa"
Hinw = 2
fiAd = Zelle.Address
Do
'wiederholte Suche wird gestartet (Abbruchbedingungen stehen bei "Loop")
Set Zelle = .FindNext(Zelle)
If Not Zelle Is Nothing Then
'Serien-Nr. wurde gefunden
If Zelle.Address <> fiAd Then
If Zelle.Offset(0, 1).Text = "dBa" Then
'In der Nachbarzelle (Spalte C) steht "dBa"
Hinw = 1
Rows(Zelle.Row).Delete
Exit Do
End If
End If
End If
Loop While Not Zelle Is Nothing And Zelle.Address <> fiAd
End If
End If
End With
Tx0 = "Datensatz '" & Wert & "' wurde nicht gefunden !"
Tx1 = "Datensatz '" & Wert & "' mit 'dBa' wurde gelöscht !"
Tx2 = "Datensatz '" & Wert & "' mit 'dBa' wurde nicht gefunden !"
Select Case Hinw
Case 0
Tx = Tx0
Case 1
Tx = Tx1
Case 2
Tx = Tx2
End Select
MsgBox Tx, 64, "Dezenter Hinweis für " & Application.UserName & ":"
End Sub

Funktionsweise:
1. Das Makro findet in Spalte B eine Zelle mit der Serien-Nr.:
---1a) in der Nachbarzelle (Spalte C) steht "dBa":
------Reaktion: Zeile wird gelöscht, entsprechende Meldung.
---1b) ) in der Nachbarzelle (Spalte C) steht nicht "dBa":
------Reaktion: wiederholte Suche wird gestartet (bis Treffer bzw. bis Spaltenende).
---------bei Treffer: Zeile wird gelöscht, wiederholte Suche wird beendet, entsprechende Meldung.
---------ohne Treffer bis Spaltenende: entsprechende Meldung.
2. Das Makro findet in Spalte B keine Zelle mit der Serien-Nr.:
---Reaktion: entsprechende Meldung.
Gruß
WernerB.
Anzeige
AW: Datensatz löschen
20.04.2005 12:03:54
Andreas
Hallo Werner,
vielen Dank für den neuen Code und die Erklärungen.
Jetzt komme ich langsam dahinter wie´s funktioniert.
Nochmals vielen Dank für deine Mühe.
Viele grüße aus dem Allgäu
Andreas

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige