Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Zeile löschen mit MsgBox
#1
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
Antworten Top
#2
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.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#3
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste