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

Forumthread: ComboBox dynamisch befüllen

ComboBox dynamisch befüllen
11.02.2018 20:23:41
Theo
Ich habe ein Formular erstellt, in dem im oberen Teil mit einem OptionButton die Sprache Deutsch oder Englisch auswählen kann.
Darunter habe ich 3 ComboBoxen, die, je nachdem ob Deutsch oder Englisch ausgewählt wurde, mit den Einträgen der richtigen Sprache befüllt sind.
Die Einträge für Combobox1 zB stehen in Deutsch in C243:C260, die Englischen in D243:D260.
Ich habe jetzt folgendes versucht:
Private Sub ComboBox1_Change()
If C2 = False Then
ComboBox3.ListFillRange = ("D243:D260")
End If
If C2 = True Then
ComboBox3.ListFillRange = ("C243:C260")
End If
Leider habe ich sehr beschränkte VBA Kenntnisse.
Vielleicht kann mir da jemand weiterhelfen.
Vielen Dank.
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ComboBox dynamisch befüllen
11.02.2018 20:27:58
Theo
Habe einen kleinen Fehler gefunden, funktioniert aber leider trotzdem nicht:
Private Sub ComboBox1_Change()
If C2 = False Then
ComboBox1.ListFillRange = ("D243:D260")
End If
If C2 = True Then
ComboBox1.ListFillRange = ("C243:C260")
End If
Vielen Dank
AW: ComboBox dynamisch befüllen
11.02.2018 20:42:36
Werner
Hallo Theo,
was soll das hier werden?
If C2 = False Then
Willst du die Zelle C2 auf Wahr/Falsch prüfen?
Dann
If Range("C2") = False Then
Warum lädst du nicht einfach deine Datei hoch?
Gruß Werner
Anzeige
AW: ComboBox dynamisch befüllen
14.02.2018 19:50:15
Theo
Vielen Dank Werner für deine Antwort.
Ja genau, ich wollte C2 auf Wahr/Falsch prüfen.
Leider funktioniert es nicht, dass sich die ListFillRange ändert, wenn ich das Optionsfeld durch Klick auf "Englisch" ändere.
Ich habe die Datei hochgeladen, vielleicht fällt dir ja was dazu ein.:
https://www.herber.de/bbs/user/119806.xlsm
Weiters möchte ich die Datei nach dem Ausfüllen mit Klick auf einen Button "speichern unter", "schließen" und dann die "unausgefüllte" Datei wieder öffnen.
Speichern unter und schließen funktioniert perfekt, nur öffnet sich die Datei dann nicht mehr.
Habe das in Modul 2 hinterlegt.
Vielen Dank
Anzeige
AW: ComboBox dynamisch befüllen
15.02.2018 09:43:10
Werner
Hallo Theo,
im Moment kann ich leider keine .xlsm herunterladen.
Ich versuchs mal in Schriftform:
1. eine Userform anlegen
2. einen Rahmen aus den Steuerelementen auf die Userform
3. Beschriftung Rahmen "Sprache"
4. 2 OptionButton in den Rahmen legen
5. OptionButton1 umbenennen in Deutsch, Beschriftung Deutsch
6. OptionButton2 umbenennen in Englisch, Beschriftung Englisch
7. eine Combobox auf die Userform
Folgenden Code ins Codemodul der Userform:
Private Sub ComboBox1_DropButtonClick()
If Me.Deutsch Then
Me.ComboBox1.RowSource = "C243:C260"
ElseIf Me.Englisch Then
Me.ComboBox1.RowSource = "D243:D260"
End If
End Sub
Private Sub UserForm_Initialize()
Me.Deutsch = True
End Sub
Die Userform wird mit gesetztem OptionButton "Deutsch" gestartet
Dadurch, dass die OptionButton in einem Rahmen sind, kann automatisch immer nur einer gewählt sein.
Gruß Werner
Anzeige
AW: ComboBox dynamisch befüllen
15.02.2018 16:37:19
Theo
Das ist natürlich auch eine elegante Lösung.
Vielen Dank Werner.
Hättest du hier evt. auch eine Lösung?
Ich möchte die Datei nach dem Ausfüllen mit Klick auf einen CommandButton "speichern unter", "schließen" und dann die "unausgefüllte" Datei wieder öffnen.
Speichern unter und schließen funktioniert perfekt, nur öffnet sich die Datei dann nicht mehr.
Habe das in einem Modul so hinterlegt:
Sub Schaltfläche11_Klicken()
Dim strDateiname As String
Dim strAntwort As String
strDateiname = "RE " & Range("C10").Value & " " & Range("E11").Value & ".XLSM"
ActiveWorkbook.SaveAs ("H:\Testordner\" & strDateiname)
ActiveWorkbook.Close
Workbooks.Open Filename:="H:\Testordner\Test Vorlage.xlsm"
End Sub

Anzeige
AW: ComboBox dynamisch befüllen
16.02.2018 20:17:21
Werner
Hallo Theo,
da beide Dateien im gleichen Pfad sind/in den gleichen Pfad sollen, kannst du dir den Pfad ja im Code deiner Musterdatei über ThisWorkbook.Path holen (die Musterdatei muss dann natürlich vor dem ersten Ausführen des Codes im entsprechenden Ordner gespeichert worden sein).
Weiterhin dann einfach das SaveCopyAs nutzen. Dadurch wird deine Musterdatei als Kopie gespeichert, die Musterdatei bleibt offen. Gegenüber dem SaveAs sparst du dir dann dadurch das Schließen der neuen Datei und das erneute Öffnen der Musterdatei.
Sub Schaltfläche11_Klicken()
Dim strDatei As String, strPfad As String
Application.ScreenUpdating = False
strDatei = "RE " & Range("C10").Value & " " & Range("E11").Value & ".xlsm"
strPfad = ThisWorkbook.Path & "\" & strDatei
ThisWorkbook.SaveCopyAs strPfad
Application.ScreenUpdating = True
End Sub
Gruß Werner
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

ComboBox dynamisch befüllen in Excel VBA


Schritt-für-Schritt-Anleitung

  1. UserForm erstellen: Öffne Visual Basic for Applications (VBA) mit Alt + F11 und erstelle eine neue UserForm.

  2. Steuerelemente hinzufügen:

    • Füge zwei OptionButtons hinzu, um zwischen Deutsch und Englisch zu wählen.
    • Füge eine ComboBox (z.B. ComboBox1) hinzu, die dynamisch befüllt wird.
  3. VBA-Code einfügen: Füge den folgenden Code ins Codemodul der UserForm ein:

    Private Sub ComboBox1_DropButtonClick()
       If Me.OptionButton1.Value Then
           Me.ComboBox1.RowSource = "C243:C260" ' Deutsch
       ElseIf Me.OptionButton2.Value Then
           Me.ComboBox1.RowSource = "D243:D260" ' Englisch
       End If
    End Sub
    
    Private Sub UserForm_Initialize()
       Me.OptionButton1.Value = True ' Standard auf Deutsch
    End Sub
  4. OptionButtons benennen: Nenne den ersten OptionButton „Deutsch“ und den zweiten „Englisch“.

  5. Testen: Starte die UserForm mit F5 und teste die Funktionalität.


Häufige Fehler und Lösungen

  • Fehler: ComboBox wird nicht befüllt: Stelle sicher, dass die RowSource korrekt gesetzt ist. Überprüfe die Benennungen der OptionButtons.

  • Fehler: C2 wird nicht erkannt: Verwende Range("C2") statt C2, um auf die Zelle zuzugreifen.

  • Lösung für nicht öffnende Datei: Wenn die Datei nach dem Speichern nicht geöffnet wird, stelle sicher, dass der Pfad zum Öffnen korrekt angegeben ist. Verwende ThisWorkbook.Path um den aktuellen Pfad zu referenzieren.


Alternative Methoden

  • VBA Combobox mit Range füllen: Anstelle von RowSource kannst du die ComboBox auch mit einer Schleife befüllen:

    Dim cell As Range
    Me.ComboBox1.Clear
    For Each cell In Range("C243:C260")
       Me.ComboBox1.AddItem cell.Value
    Next cell
  • Excel VBA ListBox dynamisch füllen: Ähnlich wie bei der ComboBox kannst du eine ListBox dynamisch befüllen, indem du die Einträge in einer Schleife hinzufügst.


Praktische Beispiele

  • Beispiel: Zwei ComboBoxen: Wenn du zwei ComboBoxen hast, eine für die Sprache und eine für die Auswahl, kannst du den Code anpassen, um die zweite ComboBox basierend auf der Auswahl der ersten zu befüllen.

    Private Sub ComboBox1_Change()
       If ComboBox1.Value = "Deutsch" Then
           ComboBox2.RowSource = "E243:E260" ' Deutsch
       Else
           ComboBox2.RowSource = "F243:F260" ' Englisch
       End If
    End Sub

Tipps für Profis

  • Verwendung von Datenbereichen: Verwende benannte Bereiche für deine Daten, damit die RowSource übersichtlicher und leichter zu warten ist.

  • Autobeschriftung in Englisch: Nutze VBA, um dynamisch Beschriftungen zu ändern, je nach gewählter Sprache. Dies kann durch das Setzen der Caption-Eigenschaft der Steuerelemente erfolgen.

  • Optimierung der Performance: Deaktiviere Application.ScreenUpdating während der Befüllung, um die Performance zu verbessern.


FAQ: Häufige Fragen

1. Wie kann ich die ComboBox mit Werten aus einer Tabelle befüllen?
Du kannst die RowSource-Eigenschaft auf den entsprechenden Bereich deiner Tabelle setzen.

2. Was mache ich, wenn die ComboBox leer bleibt?
Überprüfe, ob der Range korrekt definiert ist und ob der Code in der richtigen Ereignisprozedur ausgeführt wird.

3. Kann ich mehrere ComboBoxen gleichzeitig befüllen?
Ja, du kannst mehrere ComboBoxen in derselben Change-Ereignisprozedur ansprechen und entsprechend die RowSource für jede ComboBox festlegen.

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