Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1152to1156
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Userform - ComboBox Einträge automatisch erweitern

Userform - ComboBox Einträge automatisch erweitern
Pixeldieb
Hallo Fachmänner,
kann man eine ComboBox dazu bringen, dass ein Text der in das Feld eingegeben wird, automatisch in die Auswahliste eingetragen wird?
Beispiel:
Die ComboBox hat die Auswahlmöglichkeiten "Rot", "Blau", "Grün", ich schreibe aber in das Feld "Gelb" hinein und möchte, das dieser Eintrag automatisch beim nächsten Mal mit ausgewählt werden kann.
Das Speichern in der Auswahlliste soll schon beim "Sub ComboBox_Exit" passieren. Dann könnte man nämlich auch so die Auswahlliste einfach und schnell füllen, ohne den Inhalt der kompletten UserForm zu speichern.
Vorschläge sind Wilkommen ;-)
Gruß Pixeldieb
AW: Userform - ComboBox Einträge automatisch erweitern
27.04.2010 11:00:54
Hajo_Zi
Hallo Unberkannte(r),
vergebe einen Namen (bereich.verschieben) und weise diesen zu.

AW: Userform - ComboBox Einträge automatisch erweitern
27.04.2010 11:27:59
Pixeldieb
Hallo Hajo,
das verstehe ich jetzt nicht.
Mein Makro lautet beispielhaft:
Private Sub UserForm_Initialize()
Dim rng As Range
With Sheets("Vorgaben")
For Each rng In .Range("e2:e20")
UserForm1.ComboBox2.AddItem rng
Next
For Each rng In .Range("f2:f20")
UserForm1.ComboBox3.AddItem rng
Next
End With
End Sub

In den Zellen e2:e4 steht "Rot", "Blau" und "Grün". Die restlichen Zellen sind erst einmal leer.
Gespeichert wird mit:
Private Sub Speichern_Click
If ComboBox.ListIndex = -1 Then
MsgBox "Bitte eine Farbe auswählen oder eintragen"
Me.ComboBox.SetFocus
Exit Sub
End If
With Sheets("Datenbank")
.Range("A65536").End(xlUp).Offset(1, 0) = ComboBox.Text
ComboBox.Text = ""
End With
End Sub
Jetzt hätte ich gerne einen Code, der die Auswahlmöglichkeiten in der ComboBox erweitert, wenn dort etwas eingetragen wird (z. B. "Gelb"), was bis dahin noch nicht zur Auswahl stand. Das Ganze in Form von:
Private Sub ComboBox_Exit(ByVal Cancel As MSForms.ReturnBoolean)
' Wenn in ComboBox Text eingetragen wird, der noch nicht in
' der Auswahlliste steht, dann speichere den Text unter den
' letzten Eintrag in der Auswahl e2:e20
End Sub
Gruß Pixeldieb
Anzeige
ComboBox Einträge erweitern
27.04.2010 11:22:26
Matthias
Hallo
Ich weiß ja nicht was Du vorhast.
Wie wäre das hier ?
Option Explicit

Private Sub UserForm_Activate()
 ComboBox1.Clear
 ComboBox1.AddItem "blau"
 ComboBox1.AddItem "rot"
 ComboBox1.AddItem "Grün"
End Sub

Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim X As Long
For X = 0 To ComboBox1.ListCount - 1
    If ComboBox1.Value = ComboBox1.List(X) Then Exit Sub
Next
ComboBox1.AddItem ComboBox1.Value
End Sub
Gruß Matthias
Anzeige
AW: ComboBox Einträge erweitern
27.04.2010 11:51:27
Pixeldieb
Hallo Matthias,
Danke, dein Exit-Befehl sieht schon sehr gut aus. Allerdings soll der (neue) Eintrag nicht nur temporär in der ComboBox zu sehen sein, sondern auch dann immer in der Vorauswahl gespeichert werden. Die Vorauswahl liegt in einem Tabellen-Bereich (e2:e20).
In der Antwort auf Hajo's Beitrag habe ich versucht es noch einmal zu verdeutlichen, in dem ich einen Beispiel-Code geschrieben habe.
Gruß Pixeldieb
AW: ComboBox Einträge erweitern
27.04.2010 12:30:22
Pixeldieb
Habe vergessen "Frage noch offen" auszuwählen...
AW: Userform - ComboBox Einträge automatisch erweitern
27.04.2010 15:26:49
Pixeldieb
Ich habe mir jetzt mal etwas mit Hilfe des Codes von Matthias gebastelt:
Private Sub UserForm_Initialize()
Dim rng As Range
With Sheets("Vorgaben")
For Each rng In .Range(Cells(1000, 5).End(xlUp).Offset(0, 0), Cells(2, 5))
UserForm1.ComboBox1.AddItem rng
Next
End With
End Sub

Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim X As Long
For X = 0 To ComboBox1.ListCount - 1
If ComboBox1.Value = ComboBox1.List(X) Then Exit Sub
Next
With Sheets("Vorgaben")
.Range("e1000").End(xlUp).Offset(1, 0) = ComboBox1.Text
End With
End Sub
Problem:
Der neue Eintrag wird zwar bei "Exit" in der Liste mit den Auswahlfeldern gespeichert, aber wenn man in der UserForm hin und her klickt leider auch mehrmals.
Wie schaffe ich es, dass die Auswahlliste um den Eintrag sofort ergänzt wird, damit der Eintrag nur einmal gespeichert wird?
Gruß Pixeldieb
Anzeige
Habe jetzt die Lösung selbst gefunden!
28.04.2010 07:04:36
Pixeldieb
Habe jetzt die Lösung selbst gefunden:
Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim X As Long
For X = 0 To ComboBox1.ListCount - 1
If ComboBox1.Value = ComboBox1.List(X) Then Exit Sub
Next
With Sheets("Vorgaben")
.Range("e1000").End(xlUp).Offset(1, 0) = ComboBox1.Text
ComboBox1.AddItem ComboBox1.Value
End With
End Sub

war grade wieder am basteln ...
28.04.2010 08:35:26
Matthias
Hallo
... brauch ich ja nun nicht mehr :o)
Gruß Matthias
AW: war grade wieder am basteln ...
28.04.2010 09:28:20
Pixeldieb
Trotzdem Danke! Dein 1. Ansatz hat mir viel geholfen.
Gruß Pixeldieb

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige