Combobox auf 5 Zeilen begrenzen

Hi!

Ich würde ganz gerne eine Combobox erstellen, in der die Werte die man eingibt, Zeile für Zeile gespeichert werden. Allerdings nur bis max 5 Zeilen. Danach soll die unterste Zeile gelöscht und dafür der neue Wert ganz oben wieder eingefügt werden.

Quasi genauso wie die URL-Leiste im Internet-Explorer oder die Historie im Mediaplayer.

Danke schonmal

Ich würde ganz gerne eine Combobox erstellen, in der die Werte
die man eingibt, Zeile für Zeile gespeichert werden.
Allerdings nur bis max 5 Zeilen. Danach soll die unterste
Zeile gelöscht und dafür der neue Wert ganz oben wieder
eingefügt werden.

Hallo Vino,

schreib mal in A1:A5 was unterschiedliches rein.
Erstelle eine Combobobox aus Steuerelementtoolbox (Active-X).
Setze den ListFillRange auf A1:A5

Ins Tabellenmodul z.B. Tabelle1:

Private Sub ComboBox1\_LostFocus()
If Application.CountIf(Range("A1:A5"), ComboBox1.Value) = 0 Then
 If ComboBox1.Value "" Then
 Range("A1:A4").Cut Destination:=Range("A2")
 Range("A1").Value = ComboBox1.Value
 End If
End If
End Sub

Gruß
Reinhard

Sorry, nicht dazu geschrieben:
Es handelt sich um VB6. Also ohne Excel.

Hallo,

so etwas?

Option Explicit

Private Sub Text1\_KeyDown(KeyCode As Integer, Shift As Integer)
 If KeyCode = 13 Then
 If Combo1.ListCount \> 4 Then
 Combo1.RemoveItem (0)
 End If
 Combo1.AddItem Text1.Text
 End If
End Sub

Gruß Rainer

Ja genau,
jetzt müssten die neuen Eingaben nurnoch von oben nach unten in die Combobox eingefügt werden. Geht das?

Hallo,

jetzt müssten die neuen Eingaben nurnoch von oben nach unten
in die Combobox eingefügt werden. Geht das?

ja, genau so gut.

Option Explicit

Private Sub Text1\_KeyDown(KeyCode As Integer, Shift As Integer)
 If KeyCode = 13 Then
 If Combo1.ListCount \> 4 Then
 Combo1.RemoveItem (Combo1.ListCount - 1)
 End If
 Combo1.AddItem Text1.Text, 0
 End If
End Sub

Gruß Rainer

Ja genau das ist es! Vielen Dank.

Nur noch ein letztes Problem:
Der Text aus der Textbox soll nur in die Combobox, wenn er neu ist und sich von den anderen Einträgen unterscheidet.

Ich versuche jetzt schon seit Stunden das ganze mit Variablen zu lösen aber komme einfach nicht dahinter.

Hallo,

Nur noch ein letztes Problem:
Der Text aus der Textbox soll nur in die Combobox, wenn er neu
ist und sich von den anderen Einträgen unterscheidet.

auch kein Problem. :smile:

Option Explicit

Private Sub Text1\_KeyDown(KeyCode As Integer, Shift As Integer)
 Dim i As Integer
 If KeyCode = 13 Then
 For i = 0 To Combo1.ListCount - 1
 If Trim(Text1.Text) = Trim(Combo1.List(i)) Then Exit Sub
 Next
 If Combo1.ListCount \> 4 Then
 Combo1.RemoveItem (Combo1.ListCount - 1)
 End If
 Combo1.AddItem Text1.Text, 0
 End If
End Sub

Gruß Rainer

Exakt das was ich suche!
Vielen Dank für die Hilfe.

Eine letzte Frage:
Gibt es eine Möglichkeit, dass wenn bei der Combobox ein Eintrag ausgewählt wurde, der Cursor sofort auf Textbox2 springt?

Hi,

Gibt es eine Möglichkeit, dass wenn bei der Combobox ein
Eintrag ausgewählt wurde, der Cursor sofort auf Textbox2
springt?

Ja. :smile: Ich habe mal auch den angeklickten Text in die Textbox geschrieben, das kannst Du ja entfernen, wenn Du es nicht brauchst.

Gruß Rainer

Option Explicit

Private Sub Combo1\_Click()
 Text1.Text = Combo1.List(Combo1.ListIndex)
 Text1.SetFocus
End Sub

Private Sub Text1\_KeyDown(KeyCode As Integer, Shift As Integer)
 Dim i As Integer
 If KeyCode = 13 Then
 For i = 0 To Combo1.ListCount - 1
 If Trim(Text1.Text) = Trim(Combo1.List(i)) Then Exit Sub
 Next
 If Combo1.ListCount \> 4 Then
 Combo1.RemoveItem (Combo1.ListCount - 1)
 End If
 Combo1.AddItem Text1.Text, 0
 End If
End Sub

Alles klar, jetzt passt alles.
Danke nochmal.