Informationen und Beispiele zum Thema MsgBox | |
---|---|
![]() |
MsgBox-Seite mit Beispielarbeitsmappe aufrufen |
Informationen und Beispiele zum Thema Userform | |
---|---|
![]() |
Userform-Seite mit Beispielarbeitsmappe aufrufen |
Informationen und Beispiele zum Thema Label | |
---|---|
![]() |
Label-Seite mit Beispielarbeitsmappe aufrufen |
Informationen und Beispiele zum Thema ListBox | |
---|---|
![]() |
ListBox-Seite mit Beispielarbeitsmappe aufrufen |
Informationen und Beispiele zum Thema TextBox | |
---|---|
![]() |
TextBox-Seite mit Beispielarbeitsmappe aufrufen |
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.