Bei combobox prüfen ob eintrag schon in liste

hallo leute,

wie kann ich bei einer combobox prüfen,
bevor ich mit additem einen neuen eintrag hinzufüge
ob dieser schon in meiner liste vorhanden ist?

das ich das mit einer if-abfrage mache ist schon klar… blos welche methode?

viele grüße

rasta

Bsp. so:
For int_i = 0 To cbo_source.ListCount - 1
If cbo_source.Selected(int_i) = txt_mystring Then
'dothat
End If
Next int_i

Grüsse Peter

PeterG´s Function ist ein lineares Suchen. Vorausgesetzt, deine Combobox ist sortiert kannst du auch die sog. binäre oder algorithmische Suche anwenden. Das ist der Algorithmus:

Public Function bSearch (ByVal Search As Variant, SearchArray() as Variant) As Long
 Dim left As Long, right As Long, middle As Long
 On Error GoTo fehler
 left = 0: right = UBound(SearchArray)
 Do
 middle = (left + right) / 2
 If Search \> SearchArray(middle) Then
 right = middle - 1
 Else
 left = middle + 1
 End If
 Loop Until SearchArray(middle) = Search Or left \> right
 If SearchArray(middle) = Search Then bSearch = middle else bSearch = -1
 Exit Function
fehler:
End Function

Erfahrungen?
Salü Holli

Was sind Deine Erfahrungen betreffend, welche Suchmethode (linear, binär) ist wann die bessere ist?

Grüsse Peter

binäre Suche hat, wenn ich mich nicht irre, einen Aufwand von wurezel(n). Das heißt es sind bei 100 elementen durchschn. 10 Schleifendurchgänge nötig um das Element zu finden.

Bei der linearen Suche ist der Aufwand n/2.

Das bedeutet, daß die binäre Suche deutlich schneller ist, je größer daß Array umso größer der Vorteil.
Allerdings muß dafür wie gesagt, das Array sortiert sein.

cu, holli

hallo,

erstmal danke für eure antworten…(hab auch brav sterne verteilt :smile: ) leider ist meine liste nicht sortiert…
ich checke von oben nach unten jeden wert einer excel-zelle durch(indem ich den zeilenwert um eins erhöhe) und lese diese werte in meine combobox ein… oder hat von euch einer ne idee, wie ich das sortieren kann?

grüße

rasta

1 Like

Property ‚sorted‘
Hallo Rasta

Controls „combo“ wie „listbox“ haben ein Property „sorted“. Wenn true, dann wird der Inhalt alphabetisch sortiert.

Bitte verteile mir keine Sterne!!! Aus verschiedensten Gründen lehne ich diese Idee ab. Besten Dank für die Kenntnisnahme und Berücksichtigung.

Grüsse Peter
*sag nein zum Stern*

hallo peter,

erstmal danke für deinen tipp.
aber… bei vb6 hast du sicherlich recht… aber kannst du mir auch verraten wie ich das in VBA hinbekomme?

grüße

rasta

1 Like

Tatsächlich…
Hallo Rasta

VBA 6.0 hat tatsächlich andere Controls. Z.B. das Property „sorted“ ist nicht enthalten.

Mein Ansatz war in solchen Fällen, die Daten vorher zu sortieren und nachher abzufüllen. Was für einen Profi wie Dich kein Problem sein sollte…

Grüsse Peter


hi günther,

danke für deine mühe
ja mist das mit den unterschiedlichen controls…
für mich kein problem?? na das ist doch eine meiner leichtesten übungen :wink:
werds schon hinkriegen…

grüße

rasta

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

1 Like