Anzeige
Archiv - Navigation
1900to1904
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

Markierten ListBox Eintrag löschen

Markierten ListBox Eintrag löschen
16.10.2022 17:45:30
Henry
Hallo Liebes Forum,
ich habe in einer UserForm eine ListBox.
Ich würde gerne den markierten Eintrag in der ListBox löschen und auch gleichzeitig aus der RowSource aus der Tabelle "datenbank").
Alle Codes, die ich im Internet gefunden habe, funktionieren leider nicht.

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Markierten ListBox Eintrag löschen
16.10.2022 18:01:15
Daniel
Hi
Was hast du denn so gefunden?
Zeig mal und erläuterte uns, warum das bei dir nicht funktioniert hat, beschreibe uns , was der jeweilige Code bei dir unerwünschtes gemacht hat.
Was auch noch wichtig zu wissen wäre:
Steht der Zellbereich für die RowSource allein in der Spalte oder befinden sich darunter noch andere Daten, die nicht verändert werden dürfen?
Hast du in die RowSource die direkte Zelladresse eingetragen, wenn ja, mit oder ohne Tabellenblattname, oder hast du einen Namen angelegt, den du dann in die RowSource geschrieben hast?
Gruß Daniel
AW: Markierten ListBox Eintrag löschen
16.10.2022 18:06:22
Henry
Hallo Daniel,
mit folgendem Code fülle ich die ListBox:
Dim letzteZeile As Long
With Me.lbo_datenbank
.ColumnCount = 12
.ColumnWidths = "60;30;40;30;35;80;90;60;60;60;45;60"
.ColumnHeads = True
.Font.Size = 10
End With
With Worksheets("datenbank")
letzteZeile = .Range("A" & .Rows.Count).End(xlUp).Row
Me.lbo_datenbank.RowSource = .Name & "!A2:L" & letzteZeile
End With
Das klappt auch einwandfrei.
Ich habe folgenden Code im Internet gefunden.
Wenn ich den Code teste, hängt sich meine Tabelle auf.
Private Sub but_eintraglöschen_Click() Dim I As Integer With lbo_datenbank I = 0 Do Until I > .ListCount - 1 If .Selected(I) Then .RemoveItem I Else I = I + 1 End If Loop End With End Sub Es kommt aber der Fehler: Nicht näher bezeichneter Fehler.
Anzeige
AW: Markierten ListBox Eintrag löschen
16.10.2022 18:24:42
Daniel
Hi
Wenn du mit RowSource verknüpft, das ist der Zellbereich führend, dh du musst alle Änderungen im Zellbereich machen, in der Listbox selbst kannst und darfst du nichts ändern.
Der gezeigte Code ist für den Fall, dass die Listbox mit .AddItem oder perZuweisung über .List = direkt befüllt wurde.
Löschen der Zeile in der Tabelle würde so gehen, wenn unterhalb nichts anderes steht:

With lbo_Datenbank
For i = .ListCount - 1 to 0 Step -1
If .Selected(i) Then Range(.RowSource).Rows(i + 1).delete shift:=xlup
Next
End With
Danach musst du ggf die RowSource nochmal neu setzen, da du ja Zeilen gelöscht hast.
Aber das kannst du bei dir selber abschreiben.
Wenn deine Listbox nicht vom Typ multiselect ist sondern singleselect dann braucht du die Schleife natürlich nicht, dann reicht:

With lbo_Datenbank
If .ListIndex >= 0 then Range(.RowSource).Rows(.Listindex + 1).delete shift:=xlup
End With
Gruß Daniel

Anzeige
AW: Markierten ListBox Eintrag löschen
16.10.2022 18:53:55
Henry
Hallo Daniel,
dein Code klappt allerdings löscht er auch Einen Eintrag wenn ich nichts ausgewählt habe.
Kann man das noch umgehen?
LG Henry
AW: Markierten ListBox Eintrag löschen
16.10.2022 18:55:53
Henry
Entschuldige bitte.
Der Code löscht doch nicht wenn ein Eintrag nicht ausgewählt wurde.
Kann man den Code vielleicht so abwandeln, dass zunächst geprüft wird ob etwas ausgewählt wurde.
AW: Markierten ListBox Eintrag löschen
16.10.2022 19:15:42
Daniel
Prinzipiell sollte nichts passieren, wenn nichts ausgewählt ist.
Wenn du prüfen willst ob nichts ausgewählt ist, dann kannst du bei der Multiselect- Listbox die gleiche Schleife verwenden, brich dann aber die Schleife einfach ab, sobald ein Wert ausgewählt ist:

If .selected(i) Then Exit for
Danach prüfst du dann i. Wenn i = -1 ist, dann wurde nichts ausgewählt. Ist i = 0 oder größer, wurde mindestens ein Wert ausgewählt.
Gruß Daniel
Anzeige
AW: Markierten ListBox Eintrag löschen
16.10.2022 19:28:40
Henry
Hallo Daniel,
ich habe MultiSelect auf Single stehen.
Mein Code sieht bislang wie folgt aus.
Mir ist nicht ganz klar wie ich die Schleife einbauen soll.

Private Sub but_eintraglöschen_Click()
Dim Antwort As Integer
Antwort = MsgBox("Möchten Sie den ausgewählten Eintrag wirklich löschen?", vbQuestion + vbYesNo + vbDefaultButton2, "Hinweis")
If Antwort = vbYes Then
With lbo_datenbank
If .ListIndex >= 0 Then Range(.RowSource).Rows(.ListIndex + 1).Delete Shift:=xlUp
End With
Call ListBoxFüllen
Else
Exit Sub
End If
End Sub

AW: Markierten ListBox Eintrag löschen
16.10.2022 20:20:21
Daniel
Wenn SingleSelect Listbox dann nix Schleife.
Dann du einfach den ListIndex prüfen tust. Wenn der -1, dann nix ausgewählt in Listbox.
Anzeige
AW: Markierten ListBox Eintrag löschen
17.10.2022 18:40:44
Henry
Danke Daniel :-)
Es klappt nun alles wie gewünscht!
AW: Markierten ListBox Eintrag löschen
16.10.2022 18:26:39
Beverly
Hi Henry,
du weist der ListBox einen ganzen Zellbereich als RowSource zu - dann kannst du m.E. aus den ListBox-Einträgen kein Zeile löschen. Du müsstest die Zeile im Tabellenblatt löschen und der ListBox denn den verkleinerten Zellbereich neu zuweisen.
Bis später
Karin

AW: Markierten ListBox Eintrag löschen
16.10.2022 20:17:49
Alwin
Hallo Henry,
da du RowSource zum laden der ListBox verwendest und kein Multiselect aktiviert ist reicht es so:

<pre><span style="font-family=MS Sans Serif,Arial; font-size=10pt"; >&lt;pre&gt;&lt;span style=<span style="color:#800000"; >&#34;font-family=MS Sans Serif,Arial; font-size=10pt&#34;</span>; &gt;&lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;Option&lt;/span&gt; &lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;Explicit&lt;/span&gt;
&lt;b&gt;&lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;Private&lt;/span&gt; &lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;Sub&lt;/span&gt; ListBoxladen&#38;#40;&#38;#41;&lt;/b&gt;
&lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;Dim&lt;/span&gt; letzteZeile &lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;As&lt;/span&gt; &lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;Long&lt;/span&gt;
&lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;With&lt;/span&gt; Me.lbo_datenbank
.ColumnCount = 12
.ColumnWidths = &lt;span style=<span style="color:#800000"; >&#34;color&#58;#800000&#34;</span>; &gt;&#38;#34;60;30;40;30;35;80;90;60;60;60;45;60&#38;#34;&lt;/span&gt;
.ColumnHeads = &lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;True&lt;/span&gt;
.Font.Size = 10
&lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;End&lt;/span&gt; &lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;With&lt;/span&gt;
&lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;With&lt;/span&gt; Worksheets&#38;#40;&lt;span style=<span style="color:#800000"; >&#34;color&#58;#800000&#34;</span>; &gt;&#38;#34;datenbank&#38;#34;&lt;/span&gt;&#38;#41;
letzteZeile = .Range&#38;#40;&lt;span style=<span style="color:#800000"; >&#34;color&#58;#800000&#34;</span>; &gt;&#38;#34;A&#38;#34;&lt;/span&gt; &#38;#38; .Rows.Count&#38;#41;.End&#38;#40;xlUp&#38;#41;.Row
Me.lbo_datenbank.RowSource = .Name &#38;#38; &lt;span style=<span style="color:#800000"; >&#34;color&#58;#800000&#34;</span>; &gt;&#38;#34;!A2&#38;#58;L&#38;#34;&lt;/span&gt; &#38;#38; letzteZeile
&lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;End&lt;/span&gt; &lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;With&lt;/span&gt;
&lt;b&gt;&lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;End&lt;/span&gt; &lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;Sub&lt;/span&gt;&lt;/b&gt;
&lt;b&gt;&lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;Private&lt;/span&gt; &lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;Sub&lt;/span&gt; but_eintragl&#38;ouml;schen_Click&#38;#40;&#38;#41;&lt;/b&gt;
&lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;Dim&lt;/span&gt; I &lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;As&lt;/span&gt; &lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;Integer&lt;/span&gt;
&lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;With&lt;/span&gt; lbo_datenbank
I = .ListIndex &#38;#43; 2
Worksheets&#38;#40;&lt;span style=<span style="color:#800000"; >&#34;color&#58;#800000&#34;</span>; &gt;&#38;#34;datenbank&#38;#34;&lt;/span&gt;&#38;#41;.Rows&#38;#40;I&#38;#41;.Delete
&lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;End&lt;/span&gt; &lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;With&lt;/span&gt;
ListBoxladen
&lt;b&gt;&lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;End&lt;/span&gt; &lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;Sub&lt;/span&gt;&lt;/b&gt;
&lt;b&gt;&lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;Private&lt;/span&gt; &lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;Sub&lt;/span&gt; UserForm_Initialize&#38;#40;&#38;#41;&lt;/b&gt;
ListBoxladen
&lt;b&gt;&lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;End&lt;/span&gt; &lt;span style=<span style="color:#800000"; >&#34;color&#58;#000080&#34;</span>; &gt;Sub&lt;/span&gt;&lt;/b&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;br&gt;&lt;span style=<span style="color:#800000"; >&#34; font-weight&#58;bold;&#34;</span>&gt; Code eingef&#38;uuml;gt mit&#58; &lt;/span&gt; &lt;a style =<span style="color:#800000"; >&#34;color&#58;#ffff00; background-color&#58;#000080; font-weight&#58;bold;&#34;</span> href=<span style="color:#800000"; >&#34;http&#58;//www.haserodt.de/cj_pro/cj_ex.htm&#34;</span> target=<span style="color:#800000"; >&#34;blank&#34;</span>&gt;Excel Code Jeanie&lt;/a&gt;</span></pre>
<br><span style=" font-weight:bold;"> Code eingef&uuml;gt mit: </span> <a style ="color:#ffff00; background-color:#000080; font-weight:bold;" href="http://www.haserodt.de/cj_pro/cj_ex.htm" target="blank">Excel Code Jeanie</a>
Gruß Uwe
Anzeige
AW: Markierten ListBox Eintrag löschen
16.10.2022 20:20:16
Alwin
Sorry das ging beim Eintragen schief.
im Tag lesbar so:

Option Explicit
Private Sub ListBoxladen()
Dim letzteZeile As Long
With Me.lbo_datenbank
.ColumnCount = 12
.ColumnWidths = "60;30;40;30;35;80;90;60;60;60;45;60"
.ColumnHeads = True
.Font.Size = 10
End With
With Worksheets("datenbank")
letzteZeile = .Range("A" & .Rows.Count).End(xlUp).Row
Me.lbo_datenbank.RowSource = .Name & "!A2:L" & letzteZeile
End With
End Sub
Private Sub but_eintraglöschen_Click()
Dim I As Integer
With lbo_datenbank
I = .ListIndex + 2
Worksheets("datenbank").Rows(I).Delete
End With
ListBoxladen
End Sub
Private Sub UserForm_Initialize()
ListBoxladen
End Sub
Gruß Uwe
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige