Clever-Excel-Forum

Normale Version: Zeile löschen mit MsgBox
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich versuche zur Zeit mein Excel-Dokument zu mit Codes zu erweitern, aber ich stehe im Moment auf der Leitung.

Folgendes: Ich möchte mit der Hilfe einer MsgBox einen Wert suchen und die entsprechende Zeile löschen.
Beispiel: Ich gebe in einer MSg Schlüsselnummer ein, und bei erfolgreicher Suche soll abgefragt ob die Zeile gelöscht werden soll.

Das Suchen nach einen Wert habe ich bereits ein Code erstellt:

Code:
Dim objShSrc As Worksheet
 Dim rng As Range, strFirst As String, strSearch As String, strMsg As String
 Dim lngSearchColumn As Long, lngResColumn As Long
 
 strSearch = InputBox("Bitte Suchbegriff eingeben!" & vbCrLf & vbCrLf & "Bei Schlüsselnummer bitte die 6-stellige Nummer eingeben!", "Suche")
 
 If strSearch <> "" Then
   If IsNumeric(strSearch) Then
     lngSearchColumn = 1
     lngResColumn = 2
   Else
     lngSearchColumn = 2
     lngResColumn = 1
   End If
   
   Set objShSrc = Sheets("Detail")
   
   Set rng = objShSrc.Columns(lngSearchColumn).Find(What:=strSearch, LookIn:=xlValues, _
     LookAt:=xlWhole, after:=objShSrc.Cells(Rows.Count, lngSearchColumn))
   If Not rng Is Nothing Then
     strFirst = rng.Address
     Do
       strMsg = strMsg & objShSrc.Cells(rng.Row, lngResColumn).Text & vbLf & vbTab
       Set rng = objShSrc.Columns(lngSearchColumn).FindNext(rng)
     Loop While Not rng Is Nothing And strFirst <> rng.Address
   End If
   If Len(strMsg) Then
     MsgBox "Die Suche nach '" & strSearch & "' ergab folgende Treffer" & vbLf & vbLf & vbTab & strMsg, vbInformation, "Suche"
   Else
     MsgBox "Kein Treffer!", vbInformation, "Suche"
   End If
 End If
 
 Set rng = Nothing
 Set objShSrc = Nothing
Was müsste ich ändern/ergänzen, damit mein Vorhaben funktioniert?
Gruß
der gute Knut
Hallo,

dann mache ich hiermit mal darauf aufmerksam, daß das hier nicht nur zwei Zeilen

Zitat:Folgendes: Ich möchte mit der Hilfe einer MsgBox einen Wert suchen und die entsprechende Zeile löschen.

Beispiel: Ich gebe in einer MSg Schlüsselnummer ein, und bei erfolgreicher Suche soll abgefragt ob die Zeile gelöscht werden soll.

sondern auch zwei verschiedene paar Schuhe sind und erschwerend hinzukommt, daß man mit einer MsgBox oder auch
MessageBox weder was suchen noch etwas eingeben kann. Jedenfalls nicht ohne diverse Klimmzüge zu unternehmen.

In Deinem Code wird das Teil dann auch richtigerweise als InputBox bezeichnet. Du solltest Dich ein bischen um die
Anwendung korrekter Bezeichnungen bemühen, dann gibt's auch weniger nachträglich zu klärender Mißverständnisse.

So, und nun werde ich mich mal um Deinen geposteten Code kümmern. Dieser Code ist aber auch nicht wirklich brauchbar.
Ein Makro beginnt, ... außer bei Dir ... mit einem Sub und endet mit einem End Sub. Es handelt sich also lediglich um einen
Codeschnipsel aus dem nicht mal erkennbar ist, wo er denn letztendlich in der VBA-Hirarchie steht.

Auch das ist nicht sehr hilfreich zum Helfen.
Hallo

schau mal ob es so passt


Code:
Sub test()
Dim rng As Range, strFirst As String, strSearch As String, strMsg As String
Dim lngSearchColumn As Long, lngResColumn As Long
Dim i As Long
strSearch = InputBox("Bitte Suchbegriff eingeben!" & vbCrLf & vbCrLf & "Bei Schlüsselnummer bitte die 6-stellige Nummer eingeben!", "Suche")
If strSearch <> "" Then
   If IsNumeric(strSearch) Then
       lngSearchColumn = 1
       lngResColumn = 2
   Else
       lngSearchColumn = 2
       lngResColumn = 1
   End If
   With Sheets("Detail")
       Set rng = .Columns(lngSearchColumn).Find(What:=strSearch, LookIn:=xlValues, _
                       LookAt:=xlWhole, after:=.Cells(.Rows.Count, lngSearchColumn))
       If Not rng Is Nothing Then
           strFirst = rng.Address
           Do
               strMsg = strMsg & .Cells(rng.Row, lngResColumn).Text & vbLf & vbTab
               Set rng = .Columns(lngSearchColumn).FindNext(rng)
           Loop While Not rng Is Nothing And strFirst <> rng.Address
           If MsgBox("Die Suche nach '" & strSearch & "' ergab folgende Treffer" & vbLf & vbLf & vbTab & strMsg _
                   & vbLf & vbLf & "Einträge löschen?", vbYesNo, "Suche") = vbYes Then
               For i = Cells(Rows.Count, lngSearchColumn).End(xlUp).Row To 1 Step -1
                   If .Cells(i, lngSearchColumn) = strSearch Then
                       .Rows(i).Delete
                   End If
               Next
           Else
               MsgBox "denn eben nüscht"
           End If
       End If
   End With
End If
Set rng = Nothing
End Sub


MfG Tom