Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Mehrere Datensätze löschen | Herbers Excel-Forum


Betrifft: Mehrere Datensätze löschen von: Frank H.
Geschrieben am: 24.10.2008 21:49:26

Hallo Excelfreaks!!!

In einer Userform befindet sich ein Listenfeld, in diesem werden alle Suchtreffer oder auch einzelne Suchtreffer angezeigt. Mit folgendem Code werden einzelne Datensätze nach erfolgtem Klick darauf gelöscht. Wie muss ich den Code erweitern, dass ich mehrere Datensätze gleichzeitig markieren kann um sie dann zu löschen? Zuvor sollte noch nachgefragt werden ob ich denn wirklich löschen will!

Mein Code:

Sub Datensatz_löschen()

Dim lng As Long
Dim i As Integer

Application.ScreenUpdating = False
With FrmHinweise
 .ListBox1.Clear
 Sheets("Hinweise").Activate
 i = 0
For lng = 3 To ActiveSheet.UsedRange.Rows.Count
If InStr(LCase(Cells(lng, 2).Value), LCase(.TextBox1.Value)) > 0 Then
  .ListBox1.AddItem Cells(lng, 2).Value
  .ListBox1.Column(1, i) = Cells(lng, 3).Value
  .ListBox1.Column(2, i) = Cells(lng, 4).Value
  .ListBox1.Column(3, i) = Cells(lng, 5).Row
  i = i + 1
 Else
 End If
Next lng
End With
FrmHinweise.Label4.Caption = FrmHinweise.Label1.Caption
FrmHinweise.Label5.Caption = FrmHinweise.Label2.Caption
FrmHinweise.Label6.Caption = FrmHinweise.Label2.Caption
Application.ScreenUpdating = True

Dim zelle As Range
Dim sBegriff As Date

sBegriff = CDate(TextBox1)
If sBegriff = 0 Then Exit Sub
Set zelle = Worksheets("Hinweise").Columns(2) _
    .Find(sBegriff, LookAt:=xlWhole)
    
If zelle Is Nothing Then

    MsgBox "Suchbegriff wurde nicht gefunden!"

Else

    zelle.Select
    Selection.ClearContents
    zelle.Offset(0, 1).Select
    Selection.ClearContents
     zelle.Offset(0, 2).Select
    Selection.ClearContents

End If

    ListBox1.Clear
    
    FelderLöschen
    
End Sub



Wer kann helfen? Allen Helfern bereits jetzt mein allerherzlichster Dank!!!

Gruß Frank H.

  

Betrifft: AW: Mehrere Datensätze löschen von: Dirk aus Dubai
Geschrieben am: 26.10.2008 13:21:20

Hallo Frank,

hab mal was an Deinem Macro geaendert.

Sub Datensatz_löschen()

Dim lng As Long
Dim i As Integer

Application.ScreenUpdating = False
With FrmHinweise
 .listbox1.Clear
 Sheets("Hinweise").Activate
 i = 0
For lng = 3 To ActiveSheet.UsedRange.Rows.Count
If InStr(LCase(Cells(lng, 2).Value), LCase(.TextBox1.Value)) > 0 Then
  .listbox1.AddItem Cells(lng, 2).Value
  .listbox1.Column(1, i) = Cells(lng, 3).Value
  .listbox1.Column(2, i) = Cells(lng, 4).Value
  .listbox1.Column(3, i) = Cells(lng, 5).Row
  i = i + 1
 Else
 End If
Next lng
End With
FrmHinweise.Label4.Caption = FrmHinweise.Label1.Caption
FrmHinweise.Label5.Caption = FrmHinweise.Label2.Caption
FrmHinweise.Label6.Caption = FrmHinweise.Label2.Caption
Application.ScreenUpdating = True

Dim zelle As Range
Dim sBegriff As Date

sBegriff = CDate(TextBox1)
If sBegriff = 0 Then Exit Sub

Set zelle = Worksheets("Hinweise").Columns(2) _
    .Find(sBegriff, LookAt:=xlWhole)

if Zelle = nothing then
  MsgBox "Suchbegriff wurde nicht gefunden!"
  goto cleanUp
end if

'Generate a list of the selected items
With listbox1
        For i = 0 To .ListCount - 1
            If .Selected(i) Then
                msg = msg & .List(i) & vbNewLine
            End If
        Next i
End With

If msg = vbNullString Then
         'If nothing was selected, tell user and let them try again
        MsgBox "Nothing was selected!  Please make a selection!"
        goto retrySelect
Else
         'Ask the user if they are happy with their selection(s)
        Check = MsgBox("You selected:" & vbNewLine & msg & vbNewLine & _
        "Are you happy with your selections?", _
        vbYesNo + vbInformation, "Please confirm")
        
        If msg = vbYes Then
           For i = 1 To listbox1.ListCount
              If .Selected(i) Then
                Range(.List(i)).ClearContents
                Range(.List(i)).Offset(0, 1).ClearContents
                Range(.List(i)).Offset(0, 2).ClearContents
              End If
           Next i
        End If
End If
exit sub
CleanUp:

    listbox1.Clear
    
    FelderLöschen
    
End Sub




Hab's nicht getestet & waere einfacher wenn Du deine Tabelle hochladen wuerdest, aber der Ansatz waere in etwa so. Musst am Anfang nachdem das Userform verlassen wurde die Listbox bestehen lassen, da sonst die Auswahl verloren geht. Und welcher event veranlasst, das der click auf einen listboxeintrag zum loeschen fuehrt?
Lass' mal hoeren, obs funktioniert.

Gruss

Dirk aus Dubai


  

Betrifft: AW: Mehrere Datensätze löschen von: Frank H.
Geschrieben am: 26.10.2008 15:32:25

Hallo Dirk!

Vielen Dank für dein Interesse an meinem Problem!
Das mit dem Hochladen funktioniert nicht, scheitert an der Dateigröße!
Zuerst änderte ich in der ListBox - Eigenschaft die Multselect Eigenschaft, dann kopierte ich deinen Code in meine Datei und erhielt folgende Fehlermeldung beim Testen.
Unzulässige Verwendung eines Objekts. In der Zeile "If zelle = Nothing Then wird Nothing blau hinterlegt.
Ich habe null Ahnung aber vielleicht du! Danke im Vorraus!!!


Gruß Frank H.


  

Betrifft: AW: Mehrere Datensätze löschen von: Leonhard.Stempfle
Geschrieben am: 26.10.2008 16:19:53

Hallo Frank,
ich hatte auch schon mal dieses Problem.
Damals habe ich das nur aufwendig hingewurstelt.
Die Sache interesiert mich und möchte dir deswegen eine Adresse weitergeben um deine Datei hochzuladen.
Wäre schön wenn ich die mal ausprobieren kann.

http://www.hostarea.de/

Gruß Leo


  

Betrifft: AW: Mehrere Datensätze löschen von: Frank H.
Geschrieben am: 26.10.2008 18:07:27

Hallo Leo!

Die Datei ist 15 MB groß, so dass es nicht funktionierte!!!
Solltest du trotzdem Interesse haben, dann teile mir doch bitte deine E-Mail Adresse mit und ich schicke dir die Datei! Wundere dich aber nicht, denn sie ist von mir als Laien zusammen gebastelt wurden und wird Excel-Profis nicht unbedingt üpberzeugen, aber ich lerne immer noch!!!

Gruß Frank H.


  

Betrifft: AW: Mehrere Datensätze löschen von: Leonhard.Stempfle
Geschrieben am: 27.10.2008 11:23:37

Hallo Frank,
meine E-Mail Adresse Leonhard.Stempfle@t-online.de
Danke schon mal im voraus.

Gruß Leo


  

Betrifft: AW: Mehrere Datensätze löschen von: Dirk aus Dubai
Geschrieben am: 28.10.2008 07:20:32

Hallo Frank,

kannst Du mal kurz beschreiben, was in Deiner Userform eingegeben werden muss, damit Dein Macro ablaeuft. Ich habe mal eine UF gebastelt mit den referenzen aus dem Macro und ich bekomme fuer Dein Macro genau die selbe Fehlermeldung wg Nothing. Warscheinlich muss in der Textbox1 ein Datum eingegeben werden.

Falls das mit dem Markieren und loeschen einzelner Eintraege funktioniert, ist das selbe auch mit mehreren Eintraegen moeglich.

Ggf. Kannst Du ja mal die Userform hochladen.

Gruss\
\
Dirk aus Dubai


  

Betrifft: AW: Mehrere Datensätze löschen von: Frank H.
Geschrieben am: 28.10.2008 17:46:50

Hallo Dirk!



Im Code den ich zuerst ins Forum gestellt habe wird die Einzelsuche per Datum in der TextBox1 ausgelöst.

Für die Suche aller vorhandenen Datensätze wird folgender Code (Ausschnitt) verwendet:



Dim zelle As Range

Dim sBegriff As String



sBegriff = TextBox1.Value

If sBegriff = "" Then Exit Sub

Set zelle = Worksheets("Hinweise").Columns(2) _

.Find(sBegriff, LookAt:=xlWhole)



If zelle Is Nothing Then

MsgBox "Suchbegriff wurde nicht gefunden!"



Else

MsgBox "Suchbegriff befindet sich in Zelle " & _

zelle.Address

End If



zelle.Select



End Sub



Ich hoffe das reicht dir? Mit dem Hochladen bin ich überfordert! Wenn du mit einer durch 'nen blutigen Laien (wenn ich euch alle so kennen gelernt habe) angefertigten Datei, welche 15 MB groß ist dich auseinandersetzen willst, dann teile mir einfache deine E-mail Adresse mit und ich schicke dir die Datei!!



Danke und freundl. Grüße aus der Hauptstadt sagt Frank H.


Beiträge aus den Excel-Beispielen zum Thema "Mehrere Datensätze löschen"