Wert aus ListBox - Laufzeitfehler

Hallo VBA Freunde,
Habe mal wieder ein kleines Problem.
Ich habe eine ListBox aus „Steuerelemente-Toolbox“ die ich mit
„ListFillRange“ fülle.(Range Q2:Q8).
Mit Doppelclick soll der Wert in die aktive Celle der Tabelle.
Der Wert wird kopiert, aber es folgt sofort der Laufzeitfehler
„Ungültiges Argument“.
Muss vielleicht noch eine Eigenschaft der ListBox geändert werden?
'lstLieferant.RemoveItem (lstLieferant.ListFillRange) = gelb
Gruß Skaletti!

Private Sub lstLieferant\_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
ActiveCell = lstLieferant.Text
lstLieferant.RemoveItem (lstLieferant.ListFillRange)
End Sub

Hallo Skaletti,

Ich habe eine ListBox aus „Steuerelemente-Toolbox“ die ich mit
„ListFillRange“ fülle.(Range Q2:Q8).

sehr schön. Ich meine dabei deine Angabe woher das Element stammt.

Es macht einfach keine Laune wenn jmd. anfragt mit ich hab da eine Listbox, man entwickelt Code weil man denkt die stammt aus der Steuerelemttoolbox.
Dann kann man alles in die Tonne kippen, weil er ein Listenfeld aus der Leiste Formular meint.

Genauso mit, ich hab da ein DropDownfeld. Schön, kann erhaben, aber welches? Ich kenne da mehrere die die man als Dropdown bezeichnen kann, alle unterschiedlich zu behandeln.

Sorry, mußte mal raus, du hast das gut gemacht.

„Ungültiges Argument“.

Wird wohl so sein.

Muss vielleicht noch eine Eigenschaft der ListBox geändert
werden?

Ich glaube nicht.

'lstLieferant.RemoveItem (lstLieferant.ListFillRange) = gelb

Tja nun, ich weiß jetzt nicht auswendig ob man mit RemoveItem mehrere Einträge aus einer Liste gleichzeitig löschen kann oder immer nur einen.

Genau das probierst du da irgendwie gerade.

Vorschlag, du schaust noch mal in die Hilfe zu RemoveItem und probierst es nochmal.

Wenn du nicht klarkommst, sag Bescheid, dann bilde ich das nach und finde sicher irgendeine Lösung.

Gruß
Reinhard

Gruß Skaletti!

Private Sub lstLieferant_DblClick(ByVal Cancel As
MSForms.ReturnBoolean)
ActiveCell = lstLieferant.Text
lstLieferant.RemoveItem (lstLieferant.ListFillRange)
End Sub

Hallo Skaletti,

„ListFillRange“ fülle.(Range Q2:Q8).

Der Fehler wird ausgelöst, weil Du die ListBox mit ListFillRange an eine Datenquelle bindest. Das Löschen eines Datenquellen-Eintrages geht wohl aber nicht.

Wenn Du die ListBox mit der „AddItem“- Methode innerhalb einer Schleife füllst, dann funktioniert auch „RemoveItem“.

Mir ist aber noch unklar, was Du mit der folgenden Anweisung bezweckst:

lstLieferant.RemoveItem (lstLieferant.ListFillRange) 

Die Anweisung soll scheinbar den gesamten Listbox-Inhalt löschen. Das macht man besser mit der „Clear“-Methode.

Es würde natürlich auch mit RemoveItem innerhalb einer rückwärtszählenden Schleife funktionieren, aber das ist ja unnötig umständlich.

VG
Carsten

„ListFillRange“ fülle.(Range Q2:Q8).

Der Fehler wird ausgelöst, weil Du die ListBox mit
ListFillRange an eine Datenquelle bindest. Das Löschen eines
Datenquellen-Eintrages geht wohl aber nicht.

Hallo Carsten,

du hast Recht, hatte mich mal viel Zeit gekostet dies rauszufinden :frowning:
Ich konnte laufend nicht kapieren warum RemoveItem nicht klappte.
Als ich dann, eher durch Zufall, auf den richtigen Gedanken kam, habe ich wieder mal sehr geflucht weil sowas gehört mit in die Hilfe hinein *sehr find*

Gruß
Reinhard

Hallo Carsten:
vielen Dank für deine Hilfe.

„ListFillRange“ fülle.(Range Q2:Q8).

Der Fehler wird ausgelöst, weil Du die ListBox mit
ListFillRange an eine Datenquelle bindest. Das Löschen eines
Datenquellen-Eintrages geht wohl aber nicht.

Wenn Du die ListBox mit der „AddItem“- Methode innerhalb einer
Schleife füllst, dann funktioniert auch „RemoveItem“.

Habe ich auch schon herausbekommen, habe nur gerade erst wieder
den Rechner eingeschaltet, deshalb die späte Antwort.

Mir ist aber noch unklar, was Du mit der folgenden Anweisung
bezweckst:

lstLieferant.RemoveItem (lstLieferant.ListFillRange)

Die Anweisung soll scheinbar den gesamten Listbox-Inhalt
löschen. Das macht man besser mit der „Clear“-Methode.

Eigentlich nur den geclickten Wert. In einer Anwendung die ich
vor einiger Zeit erstellt habe funzt das. Die ListBox ist dort
allerdings in einer UserForm.
Benutze aber jetzt die „Clear-Methode“ und funzt.
Danke für die Hilfe, auch an Reinhard.Schönes Wochenende.
Gruß Skaletti!
Hier eim Auszug aus dem Code der Anwendung:

Private Sub UserForm\_Initialize()
ltbDruck.List = Tabelle2.Range("C2:C20").Value
ltbDruck.ListIndex = 0
ltbSatz.List = Tabelle2.Range("D2:smiley:20").Value
ltbSatz.ListIndex = 0
ltbHilfskräfte.List = Tabelle2.Range("E2:E20").Value
ltbHilfskräfte.ListIndex = 0
End Sub

Private Sub ltbDruck\_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
 ActiveCell = ltbDruck.Text
 ltbDruck.RemoveItem (ltbDruck.ListIndex)
End Sub