Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1732to1736
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Eintrag Listenfeld löschen

Eintrag Listenfeld löschen
13.01.2020 11:35:05
veliks
Hallo zusammen,
wie kann ich mehrere Einträge aus einem Listenfeld löschen und gleichzeitig auch die entsprechenden Zellen einer Spalte in einem Tabellenblatt löschen? Die Liste wird mit den Einträgen in den Zellen der Spalte zunächst gefüllt.
Im Umkehrschluss geht es also darum die zu der getroffenen Auswahl im Listenfeld gehörenden Einträge in der Datenbank des Listenfelds zu löschen..
Vielen Dank im Voraus
Felix

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eintrag Listenfeld löschen
13.01.2020 11:41:35
Torsten
Hallo,
wie fuellst du denn die Listbox? Im Userform_Initialize per .Add?
Ueber den Listindex der Listbox kannst du den der Auswahl zugehoerigen Eintrag in der Tabelle finden und loeschen. Dann (wenn Userform) das Userform_Initialize wieder aufrufen, damit die Listbox aktualisiert wird. Da ja dann die Listbox wieder neu befuellt wird, ist auch da der Eintrag dann weg.
Gruss Torsten
AW: Eintrag Listenfeld löschen
13.01.2020 11:55:21
veliks
Hi Torsten,
ich fülle die Liste je nachdem welche Option im Voraus gewählt wurde über UserForm_Initialize() mit entsprechenden Einträgen der zur Option gehörenden Spalte.
Ueber den Listindex der Listbox kannst du den der Auswahl zugehoerigen Eintrag in der Tabelle finden und loeschen.
Wie genau stell ich das an?
Danke Dir :)
Anzeige
AW: Eintrag Listenfeld löschen
13.01.2020 12:16:12
Torsten
Hallo veliks,
z.B. so ueber einen Button:

Private Sub Löschen_Click()
Dim C As Variant
Dim i As Long
If Me.ListBox1.ListCount > 0 Then
If MsgBox("Die markierten Daten werden aus der Tabelle gelöscht." & vbLf & _
"Wollen Sie fortfahren?", vbYesNo + vbQuestion, "Achtung!") = vbYes Then
For i = UserForm1.ListBox1.ListCount - 1 To 0 Step -1
If Me.ListBox1.Selected(i) = True Then
With Sheets("Tabelle1")             'Tabelle anpassen
.Rows(i + 1).Delete Shift:=xlUp '+ 1 wenn Ueberschriften in Tabelle
End With
Set C = Nothing
End If
Next i
Userform_Initialize
End If
End If
End Sub

Gruss Torsten
Anzeige
AW: Eintrag Listenfeld löschen
13.01.2020 12:50:29
veliks
Hi Torsten,
danke dir schonmal für deine Mühe :)
.Rows(i + 1).Delete Shift:=xlUp
Das löscht ja die ganze Zeile. Das ist allerdings schlecht da dann ja auch der Eintrag in Spalte 2 und 3 etc. gelöscht wird. Ist es auch möglich genau die passende Zelle anzusprechen? (nicht die ganze Zeile)
Viele Grüße
AW: Eintrag Listenfeld löschen
13.01.2020 12:53:23
Torsten
Ja soll dann nur der Inhalt geloescht werden und die Zelle leer bleiben, oder die Zelle komplett und die Zellen darunter nachgeschoben?
AW: Eintrag Listenfeld löschen
13.01.2020 12:59:34
veliks
die Zelle komplett und die Zellen darunter nachgeschoben?
so wäre top!
AW: Eintrag Listenfeld löschen
13.01.2020 13:01:17
Torsten
Dann die With Anweisung in der Schleife so:

With Sheets("Tabelle1")             'Tabelle anpassen
.Cells(i + 1, "A").Delete Shift:=xlUp 'Spalte anpassen
End With

Anzeige
AW: Eintrag Listenfeld löschen
13.01.2020 13:19:37
veliks
Danke dir es funktioniert einwandfrei :)
Aber wenn ich mehrere Einträge aus der Liste zum Löschen auswähle wird immer nur der erste Eintrag gelöscht.. ist es auch möglich dass alle ausgewählten gelöscht werden?
AW: Eintrag Listenfeld löschen
13.01.2020 13:27:05
Werner
Hallo,
du mußt schon den Code von vorhin benutzen, den mit der For i = ....
Und im diesem Code dann nur die Codezeile mit dem
.Rows(i+1).delete....

durch die Codezeile
.Cells(i + 1, "A").Delete Shift:=xlUp

ersetzen.
Gruß Werner
AW: Eintrag Listenfeld löschen
13.01.2020 13:33:46
veliks
Hi Werner,
das hab ich schon gemacht - funktioniert trotzdem nicht. Ich muss mich außerdem korrigieren wenn ich zwei Einträge wähle wird nur der zweite in der Liste gelöscht (nicht der erste).
Viele Grüße
Anzeige
AW: Eintrag Listenfeld löschen
13.01.2020 14:32:09
Torsten
Kann ich nicht nachvollziehen. Bei mir werden alle markierten Eintraege geloscht.
AW: Eintrag Listenfeld löschen
13.01.2020 15:07:07
veliks
Ich habe es gerade schrittweise durchgeführt.
Das Problem ist, dass wenn die Laufvariable i die Liste von unten nach oben durchläuft und auf einen markierten Eintrag trifft dieser Eintrag gelöscht wird und die Auswahl/bzw. die Markierung der darüber liegenden Einträge aufgehoben wird. (damit lässt sich auch erklären warum immer nur der unterste Eintrag aus der Liste gelöscht wird)
Woran kann das liegen, dass die Auswahl mit dem ersten "Treffer" aufgehoben wird?
Viele Grüße
AW: Eintrag Listenfeld löschen
14.01.2020 07:21:32
Torsten
Frage. Deine Listbox ist ein MultiSelectMulti oder MultiSelectExtended?
Anzeige
AW: Eintrag Listenfeld löschen
13.01.2020 14:43:58
Werner
Hallo,
sehe gerade, dass du die Listbox per RowSource füllst, da funktioniert das so nicht.
Dann mußt du das Füllen der Listbox im Initialize umstellen.
Private Sub CommandButton1_Click()
Dim i As Long
If Me.ListBox1.ListCount > 0 Then
If MsgBox("Die markierten Daten werden aus der Tabelle gelöscht." & vbLf & _
"Wollen Sie fortfahren?", vbYesNo + vbQuestion, "Achtung!") = vbYes Then
For i = UserForm1.ListBox1.ListCount - 1 To 0 Step -1
If Me.ListBox1.Selected(i) Then
With Sheets("Tabelle1")             'Tabelle anpassen
.Cells(i + 3, "A").Delete Shift:=xlUp '+ 1 wenn Ueberschriften in Tabelle
Me.ListBox1.RemoveItem (i)
End With
End If
Next i
End If
End If
End Sub
Private Sub UserForm_Initialize()
Dim dummy As Integer
'Titel der Userform variabel anpassen an gewählte Option
Me.Caption = "Maßnahmen zu " & Worksheets("Speicher").Range("B2").Value
'Liste mit Maßnahmen füllen je nachdem was gewählt wurde
With Worksheets("Maßnahmen")
'Mensch-Verfügbarkeit
If verfügbarkeitabwesenheit = True Then
'dummy prüft ob überhaupt Maßnahmen hinterlegt sind, wenn nicht -> leere Liste anzeigen
dummy = .Cells(Rows.Count, 1).End(xlUp).Row
If dummy >= 3 Then
Me.MaßnahmenListe.List = _
.Range("A3:A" & .Cells(.Cells.Rows.Count, 1).End(xlUp).Row).Value
End If
ElseIf personalengpass = True Then
dummy = .Cells(Rows.Count, 2).End(xlUp).Row
If dummy >= 3 Then
Me.MaßnahmenListe.List = _
.Range("B3:B" & .Cells(.Cells.Rows.Count, 2).End(xlUp).Row).Value
End If
End If
End With
Gruß Werner
Anzeige
AW: Eintrag Listenfeld löschen
13.01.2020 15:44:17
veliks
Hi Werner,
danke dass du dir soviel mühe machst :)
Allerdings funktioniert irgendwas mit diesem Befehl nicht:

Me.MaßnahmenListe.List 
Ist

Me.
überhaupt nötig?
AW: Eintrag Listenfeld löschen
13.01.2020 16:35:55
Werner
Hallo,
stimmt, da ist mit ein Cells zu viel rein gerutscht.
Aber das braucht es ja auch nicht, du hast ja die letzte belegte Zelle schon in der Variablen dummy
Private Sub CommandButton1_Click()
Dim i As Long
If Me.ListBox1.ListCount > 0 Then
If MsgBox("Die markierten Daten werden aus der Tabelle gelöscht." & vbLf & _
"Wollen Sie fortfahren?", vbYesNo + vbQuestion, "Achtung!") = vbYes Then
For i = Me.ListBox1.ListCount - 1 To 0 Step -1
If Me.ListBox1.Selected(i) Then
With Sheets("Maßnahmen")             'Tabelle anpassen
.Cells(i + 3, "A").Delete Shift:=xlUp '+ 1 wenn Ueberschriften in Tabelle
Me.ListBox1.RemoveItem (i)
End With
End If
Next i
End If
End If
End Sub
Private Sub UserForm_Initialize()
Dim dummy As Long
'Titel der Userform variabel anpassen an gewählte Option
Me.Caption = "Maßnahmen zu " & Worksheets("Speicher").Range("B2").Value
'Liste mit Maßnahmen füllen je nachdem was gewählt wurde
With Worksheets("Maßnahmen")
'Mensch-Verfügbarkeit
If verfügbarkeitabwesenheit = True Then
'dummy prüft ob überhaupt Maßnahmen hinterlegt sind, wenn nicht -> leere Liste anzeigen
dummy = .Cells(.Rows.Count, 1).End(xlUp).Row
If dummy >= 3 Then
Me.ListBox1.List = _
.Range("A3:A" & dummy).Value
End If
ElseIf personalengpass = True Then
dummy = .Cells(Rows.Count, 2).End(xlUp).Row
If dummy >= 3 Then
Me.ListBox1.List = _
.Range("B3:B" & dummy).Value
End If
End If
End With
End Sub
Gruß Werner
Anzeige
AW: Eintrag Listenfeld löschen
13.01.2020 13:01:49
veliks
Und ist es auch möglich gleichzeitig mehrere Listeneinträge mit klick auf den Button zu löschen? Also wenn Multiselect der Liste möglich ist.
AW: Eintrag Listenfeld löschen
13.01.2020 12:19:29
Luschi
Hallo veliks,
warum beantwortest Du nicht die entscheidende Frage:

wie fuellst du denn die Listbox?
Solange Du darüber schweigt - schweige ich auch!
Gruß von Luschi
aus klein-Paris
AW: Eintrag Listenfeld löschen
13.01.2020 12:54:07
veliks
Hi Luschi,
so fülle ich meine Liste:
Private Sub UserForm_Initialize()
'Titel der Userform variabel anpassen an gewählte Option
Maßnahmen.Caption = "Maßnahmen zu " & Worksheets("Speicher").Range("B2").Value
'Liste mit Maßnahmen füllen je nachdem was gewählt wurde
With Worksheets("Maßnahmen")
Dim dummy As Integer '
'Mensch-Verfügbarkeit
If verfügbarkeitabwesenheit = True Then
'dummy prüft ob überhaupt Maßnahmen hinterlegt sind, wenn nicht -> leere Liste anzeigen
dummy = .Cells(Rows.Count, 1).End(xlUp).Row
If dummy 
dummy Viele Grüße
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige