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

1 Antwort

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
Woher ich das weiß:Berufserfahrung – Programmierer
MPCKhome 
Fragesteller
 10.02.2016, 16:12

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 .

0
Ninombre  10.02.2016, 17:17
@MPCKhome

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

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

1
Ninombre  10.02.2016, 22:50
@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)

1
Suboptimierer  11.02.2016, 09:30
@Ninombre

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.

0