Frage von MPCKhome, 120

Prüfen ob ein Objekt in der Combobox ist (VBA)?

Also eine Combobox bei mir wird unter gewissen bedingungen mit unterschiedlichen Items gefüllt.

Nun soll eine MSGbox kommen wenn ein gewisses Item Vorhanden ist, meine Ansätze waren ganz unterschiedlich aber alle ohne Ergebnis

If combobox9.object(range("J2") then ...

Wichtig ist das es in der Combobox nur vorhanden sein soll und nicht unbedingt ausgewählt

Vielen Dank für die Hilfe

Expertenantwort
von Suboptimierer, Community-Experte für Excel, 106
Sub SucheListenwert(sWert As String)
  Dim i As Integer

ComboBox1.Clear ComboBox1.AddItem "A" ComboBox1.AddItem "C" ComboBox1.AddItem "B"
For i = 0 To ComboBox1.ListCount - 1 If ComboBox1.List(i) = sWert Then _ Debug.Print i & " " & ComboBox1.List(i) Next End Sub
Kommentar von MPCKhome ,

Das sieht schon mal gut aus, aber ich kann nicht erkennen wo der da abfragt ob in der Combobox das Item: range("J2").value vorhanden ist .

Kommentar von Ninombre ,

Wie es jetzt aufgebaut ist, müsstest Du den Wert übergeben (aus einer anderen Sub)

sub test()
SucheListenwert (range("J2"))
end Sub

Kommentar von Ninombre ,

Im Zweifel sollte Suboptimierer noch was dazu sagen, aber im Grund kannst Du Dir aus dem Beispiel ja einfach diese Passage nehmen und erweitern

For i = 0 To ComboBox1.ListCount - 1
    If ComboBox1.List(i) = Range("J2").value Then msgbox...
  Next

evtl. musst Du noch userform1. vor die Combobox setzen, also Userform1.Combobox1.list(i)

Kommentar von Suboptimierer ,

Richtig. Die Prozedur gibt das Element und dessen Index aus, wenn es gefunden wird und es baut die Liste auf. Entscheidend ist nur die Schleife, welche man in eine Funktion kopieren kann und die dann einen Boolschen Wert zurück gibt.

Versuch mal das:

Sub Main()
  ComboBox1.Clear
  ComboBox1.AddItem "A"
  ComboBox1.AddItem "C"
  ComboBox1.AddItem "B"

Debug.Print IsItemVorhanden(Range("J2").Value) Debug.Print IsItemVorhanden("C") Debug.Print IsItemVorhanden("D")
End Sub
Function IsItemVorhanden(sItemTitel) As Boolean Dim i As Integer IsItemVorhanden = False For i = 0 To ComboBox1.ListCount - 1 If ComboBox1.List(i) = sItemTitel Then IsItemVorhanden = True Exit Function End If Next End Function

Das kann man natürlich noch weiter ausbauen, indem man sogar die ComboBox mit übergibt. Es soll ja nur dazu dienen, zu veranschaulichen, wie du das umsetzen könntest.

Keine passende Antwort gefunden?

Fragen Sie die Community