Herbers Excel-Forum - das Archiv

ComboBox-Additem

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: ComboBox-Additem
von: Andreas

Geschrieben am: 31.03.2005 10:30:22
Hallo zusammen,
habe ein Formular mit einem Kundenfeld, jetzt will ich dass bei auf dieses Feld eine Combobox aufgeht die meine Kundennamen beinhaltet. Bei Auswahl eines Kunden soll dieser in Zelle "A6" eingetragen werden.
Sollte der Kunde nicht in der Liste sein, muss ein Eingabefeld öffnen, dass es ermöglicht neue Kunden zuzufügen.
Die Kundenliste soll in der Combobox auch Alphabetisch geordnet sein.
Bin leider erste soweit:
Private Sub ComboBox1_Click()
ComboBox1.AddItem "Kunde1"
ComboBox1.AddItem "Kunde2"
ComboBox1.AddItem "Kunde3"
ComboBox1.AddItem "Kunde4"
ComboBox1.AddItem "Kunde5"
End Sub

Wer hat dazu Lösungen?
Schönen Gruss vom Bodensee Andreas
Bild

Betrifft: AW: ComboBox-Additem
von: Tobias Marx

Geschrieben am: 31.03.2005 10:37:21
Servus!
Also erst einmal wollte ich loswerden, dass du in eine ComboBox auch etwas eigenes eintragen kannst, also nicht zwingend ein neues Eingabefeld brauchst, sondern es sofort in die ComboBox eintragen kannst.
Wenn du die Kunden eintraegst, kannst du sie ja gleich alphabetisch sortieren, hier muss also kein spezieller Sortier-Algorithmus herhalten.
Nun aber der Code:

Private Sub ComboBox1_Change()
Range("A6").Value = ComboBox1.Value
End Sub

'naechste Prozedur
Private Sub UserForm_Activate()
ComboBox1.AddItem ("Kunde1")
ComboBox1.AddItem ("Kunde2")
End Sub


Gruss

Tobias
Bild

Betrifft: AW: ComboBox-Additem
von: Tobias Marx

Geschrieben am: 31.03.2005 10:53:33
Servus!
Noch eine etwas groessere Aktion, mit Umweg ueber eine extra Datei (kunden.xls), die die Kundendatenbank beinhaltet, und die Werte auch dort rein schreibt und von dort ausliest.
Private Sub ComboBox1_Change()
'Bei jedem aendern der ComboBox veraendert sich der Wert in A6
Range("A6").Value = ComboBox1.Value
End Sub
Private Sub CommandButton1_Click()
'hier benuetze ich einen CommandButton, um Namen hinzuzufuegen
'sortiert wirds auch gleich alphabetisch
normbook = ActiveWorkbook.Name
Windows("kunden.xls").Activate
Worksheets("Tabelle1").Select
endup = Range("A65536").End(xlUp).Row
Range("A" & endup).Activate
ActiveCell.Value = ComboBox1.Value
Columns("A:A").Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Windows(normbook).Activate
End Sub
Private Sub UserForm_Activate()
'Beim Aktivieren der Userform wird die Kundenliste automatisch eingelesen
'Die "kunden.xls" muss dazu aber geoeffnet sein!
normbook = ActiveWorkbook.Name
Windows("kunden.xls").Activate
Worksheets("Tabelle1").Select
endup = Range("A65536").End(xlUp).Row
For i = 1 To endup
ComboBox1.AddItem (ActiveCell.Value)
Next i
Windows(normbook).Activate
End Sub

Hab leider grad keine Moeglichkeit, es zu testen, wenns Fehler gibt, meld dich einfach nochmal.
Gruss

Tobias
Bild

Betrifft: AW: ComboBox-Additem
von: Tobias Marx
Geschrieben am: 31.03.2005 11:07:40
Boeser kleiner Fehler:
Range("A" & endup).Activate
muss
Range("A" & endup + 1).Activate
heissen.

Gruss

Tobias
Bild

Betrifft: AW: ComboBox-Additem
von: Andreas

Geschrieben am: 31.03.2005 11:29:53
Hallo Tobias,
danke für deine schnelle Hilfe, aber irgenwie läuft das bei mir nicht, bekomme Typenunverträglichkeit bei"normbook = ActiveWorkbook.Name".
Habe ein Workbook mit Name Kunden.XLS geöffnet, wobei eine Lösung mit einem Tabellenblatt mit Namen Kunden wäre auch möglich.
Gruss Andreas
Bild

Betrifft: AW: ComboBox-Additem
von: Tobias Marx

Geschrieben am: 31.03.2005 11:37:23
Servus!
So sollts gehen, diesmal mit einer Tabelle im selben Workbook. Wie gesagt, is halt untested, wenn Fehler da sind, einfach nochmal melden!
Private Sub ComboBox1_Change()
'Bei jedem aendern der ComboBox veraendert sich der Wert in A6
Range("A6").Value = ComboBox1.Value
End Sub
Private Sub CommandButton1_Click()
'hier benuetze ich einen CommandButton, um Namen hinzuzufuegen
'sortiert wirds auch gleich alphabetisch
Worksheets("Kunden").Select
endup = Range("A65536").End(xlUp).Row
Range("A" & endup + 1).Activate
ActiveCell.Value = ComboBox1.Value
Columns("A:A").Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Worksheets("Tabelle1").Select
End Sub
Private Sub UserForm_Activate()
'Beim Aktivieren der Userform wird die Kundenliste automatisch eingelesen
'Die "kunden.xls" muss dazu aber geoeffnet sein!
Worksheets("Kunden").Select
endup = Range("A65536").End(xlUp).Row
For i = 1 To endup
ComboBox1.AddItem (ActiveCell.Value)
Next i
Worksheets("Tabelle1").Activate
End Sub

Gruss

Tobias
 Bild