Herbers Excel-Forum - das Archiv

VBA/Msg-Box/Zeilen löschen

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

Betrifft: VBA/Msg-Box/Zeilen löschen
von: Uwe

Geschrieben am: 22.12.2006 02:56:09
Hallo,
könnt Ihr mir bei folgendem Problem helfen:
Ich habe in Spalte A Zahlen von z.B. 1 bis 10. Jede Zahl nimmt wiederum einen Bereich von 20 Zeilen ein (z.B. die Zahl 3 steht in Zelle A10. Der der Zahl zugeordnete Bereich umfasst die Zeilen 10 bis 19). Über eine Msg-Box soll man die zu löschende Zahl eingeben. Von der eingegebenen Zahl sollen abwärts dann insg. 20 Zeilen gelöscht werden.
Bsp.: Msg-Box: Eingabe 3, Makro: Suche in Spalte A die Zahl 3 und lösche von der Zahl 20 Zeilen abwärts.
Habt Ihr eine Lösung?
Gruß
Uwe
Bild

Betrifft: AW: VBA/Msg-Box/Zeilen löschen
von: Oberschlumpf

Geschrieben am: 22.12.2006 07:29:12
Hi Uwe
Meinst du so:
Sub SearchAndClear()
Dim liSuche As Integer, liZeile As Integer
liSuche = InputBox("Geben Sie die Suchzahl ein:", "Suche")
For liZeile = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Range("A" & liZeile).Value = liSuche Then
Rows(liZeile & ":" & liZeile + 19).Delete
Exit For
End If
Next
End Sub

Konnte ich helfen?
Ciao
Thorsten
Bild

Betrifft: AW: VBA/Msg-Box/Zeilen löschen
von: ingUR

Geschrieben am: 22.12.2006 07:43:44
Hallo, Uwe,
vermutlich wolltest Du die Kennzahl über eine INPUTBOX eingeben, denn ein MSGBOX kann Dir nur eine NAchricht anzeigen, nicht jedoch Eingabewerte abfragen.
Ferner habe ich nicht ganz begriffen, wieso Du einmal von 20 zu löschenden Zeilen schreibst, dann jedoch mitteilst, dass zur Kennzahl ein Bereich von zehn Zeilen («z.B. die Zahl 3 steht in Zelle A10. Der der Zahl zugeordnete Bereich umfasst die Zeilen 10 bis 19») gehört um dann in Deinem Beispiel zum Makro wieder zwanzig Zeilen löschen zu lassen.
Gut, das ist nicht das eigentliche Problem. Es bleiben zwei Fragen:
  • Kommt die Kennzahl (Suchbegriff) eindeutig nur einmal in der Spalte A vor?
  • Ist die Kennzahlzeile die erste zu löschende Zeile von den zwanzig (zehn?) Zeilen des zu löschenden Bereichs?
    Beide Fragen habe ich mit "Ja" beantwortet und konnte so folgendes Standardmodul schreiben und einsetzen (der Wert für die Variable Anzahl ist anzupassen, falls er unzutreffend ist):
    Option Explicit
    Sub LoescheBereichNachKennzahl()
    Dim strMuster As String, lFirstRow As Long
    Dim Anzahl As Integer
    Anzahl = 10
    strMuster = InputBox("Kennung")
    lFirstRow = Range("A:A").Find(What:=strMuster, _
    LookAt:=xlWhole).Row
    If lFirstRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 Then
    MsgBox "Eintrag " & strMuster & " nicht gefunden"
    Exit Sub
    End If
    Rows(lFirstRow & ":" & lFirstRow + Anzahl - 1).Delete Shift:=xlUp
    End Sub
    
    Vielleicht kannst Du dieses Grundgerüst für Deine Aufgabe geeignet anpassen.
    Uwe
    Bild

    Betrifft: AW: VBA/Msg-Box/Zeilen löschen
    von: Uwe
    Geschrieben am: 22.12.2006 20:55:02
    Klasse,
    hat wunderbar geklappt. Vielen Dank.
    Gruß
    Uwe
     Bild