Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: ComboBox-Additem

ComboBox-Additem
31.03.2005 10:30:22
Andreas
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
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ComboBox-Additem
31.03.2005 10:37:21
Tobias
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
Anzeige
AW: ComboBox-Additem
31.03.2005 10:53:33
Tobias
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
Anzeige
AW: ComboBox-Additem
31.03.2005 11:07:40
Tobias
Boeser kleiner Fehler:
Range("A" & endup).Activate
muss
Range("A" & endup + 1).Activate
heissen.

Gruss

Tobias
AW: ComboBox-Additem
31.03.2005 11:29:53
Andreas
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
Anzeige
AW: ComboBox-Additem
31.03.2005 11:37:23
Tobias
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
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

ComboBox in Excel VBA nutzen


Schritt-für-Schritt-Anleitung

Um eine ComboBox in Excel VBA zu verwenden, folge diesen Schritten:

  1. UserForm erstellen: Öffne den Visual Basic-Editor (ALT + F11) und füge eine neue UserForm hinzu.

  2. ComboBox hinzufügen: Ziehe eine ComboBox (z.B. ComboBox1) aus der Toolbox auf die UserForm.

  3. Code für die ComboBox: Füge den folgenden Code in das UserForm-Modul ein:

    Private Sub UserForm_Activate()
       ComboBox1.AddItem "Kunde1"
       ComboBox1.AddItem "Kunde2"
       ComboBox1.AddItem "Kunde3"
    End Sub
    
    Private Sub ComboBox1_Change()
       Range("A6").Value = ComboBox1.Value
    End Sub
  4. Eingabefeld für neue Kunden: Um die Möglichkeit zu schaffen, neue Kunden hinzuzufügen, kannst du einen Button und den folgenden Code verwenden:

    Private Sub CommandButton1_Click()
       ComboBox1.AddItem TextBox1.Value  ' Angenommen, TextBox1 ist das Eingabefeld
    End Sub
  5. Sichtbarkeit der ComboBox: Achte darauf, dass die ComboBox sichtbar ist, wenn du das UserForm aktivierst.


Häufige Fehler und Lösungen

  • Typenunverträglichkeit: Wenn du den Fehler "Typenunverträglichkeit" erhältst, überprüfe, ob alle verwendeten Variablen korrekt deklariert sind. Stelle sicher, dass normbook als String deklariert ist.

    Dim normbook As String
  • ComboBox wird nicht gefüllt: Wenn die ComboBox beim Aktivieren des UserForms leer bleibt, stelle sicher, dass der Code im UserForm_Activate()-Ereignis korrekt implementiert ist.

  • Kunden nicht alphabetisch sortiert: Um die Elemente in der ComboBox alphabetisch zu sortieren, kannst du die AddItem Methode anpassen, sodass die Einträge sortiert hinzugefügt werden.


Alternative Methoden

  1. Daten aus einem Bereich einfügen: Um Elemente aus einem bestimmten Bereich in die ComboBox hinzuzufügen, kannst du folgenden Code verwenden:

    Private Sub UserForm_Activate()
       Dim i As Integer
       For i = 1 To 10  ' Angenommen, die Kunden stehen in den ersten 10 Zeilen
           ComboBox1.AddItem Worksheets("Kunden").Cells(i, 1).Value
       Next i
    End Sub
  2. Verwendung von ActiveX-ComboBox: Wenn du eine ActiveX-ComboBox verwendest, stelle sicher, dass du die richtigen Eigenschaften und Methoden verwendest, um die ComboBox effektiv zu steuern.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du die ComboBox in VBA verwenden kannst:

  • Kundenliste aus einer Excel-Datei: Wenn du eine externe Excel-Datei hast, aus der du Kunden importieren möchtest, kannst du den folgenden Code verwenden:

    Private Sub UserForm_Activate()
       Dim wb As Workbook
       Dim ws As Worksheet
       Set wb = Workbooks.Open("C:\Pfad\zu\deiner\Datei.xlsx")
       Set ws = wb.Sheets(1)
       Dim i As Integer
       For i = 1 To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
           ComboBox1.AddItem ws.Cells(i, 1).Value
       Next i
       wb.Close False
    End Sub
  • Kunden hinzufügen und sortieren: Um einen neuen Kunden hinzuzufügen und die Liste alphabetisch zu sortieren, kannst du den Code aus der Schritt-für-Schritt-Anleitung anpassen.


Tipps für Profis

  • Verwende ComboBox.AddItem: Nutze die AddItem Methode, um Elemente dynamisch hinzuzufügen. Dies ist besonders nützlich, wenn du viele Daten hast oder die Datenquelle sich ändert.

  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um häufige Probleme zu vermeiden, z.B. wenn eine Datei nicht gefunden wird oder der Benutzer ungültige Eingaben macht.

  • Verwendung von List-Eigenschaft: Anstatt AddItem zu verwenden, kannst du auch die List-Eigenschaft der ComboBox nutzen, um die gesamte Liste auf einmal zu setzen.


FAQ: Häufige Fragen

1. Wie kann ich die ComboBox mit Daten aus einem anderen Arbeitsblatt füllen?
Du kannst die AddItem Methode nutzen, um Daten aus einem anderen Arbeitsblatt hinzuzufügen. Verwende eine Schleife, um durch die Zellen des gewünschten Bereichs zu iterieren.

2. Wie sortiere ich die Einträge in einer ComboBox?
Du kannst die Einträge beim Hinzufügen direkt alphabetisch sortieren oder nach dem Hinzufügen alle Elemente in der ComboBox sortieren, indem du die List-Eigenschaft anpasst.

3. Ist es möglich, eine ComboBox mit Werten aus einer Datenbank zu füllen?
Ja, du kannst VBA verwenden, um eine Verbindung zu einer Datenbank herzustellen und die Werte direkt in die ComboBox zu laden.

4. Kann ich die ComboBox in einer Excel-Tabelle verwenden?
Ja, du kannst eine ComboBox in einer Excel-Tabelle als ActiveX-Steuerelement hinzufügen und deren Eigenschaften über VBA steuern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige