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

Forumthread: Userform, combobox füllen in abhängigkeit von

Userform, combobox füllen in abhängigkeit von
12.01.2018 16:00:57
Jörg
Hallo Forum,
in einer Tabelle (wird laufend erweitert) habe ich zeilenweise Datensätze stehen, bei denen es vorkommen kann, daß in einzelnen Zellen der Spalte J kein Wert steht.
Wie kann eine Combobox diese Zellen anzeigen mit dem Wert der in der Zeile in Spalte B steht?
Wenn der User auf diesen Wert klickt will ich ihm alle Werte in der Userform entsprechend anzeigen und er kann den fehlenden Wert nachtragen.
Im voraus besten Dank,
ciao Jörg
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Userform, combobox füllen in abhängigkeit von
12.01.2018 17:30:10
fcs
Hallo Jörg,
hier ein Beispiel für das Füllen einer Combobox/Listbox mit Kriterien
'Beispiel Combobox oder Listbox füllen, wenn Kriterium erfüllt
Private Sub UserForm_Initialize()
Dim wks As Worksheet
Dim Zeile As Long, Zeile_L As Long
Dim varB, varZellAdr
Set wks = ActiveSheet  'ggf. anpassen
With wks
'letzte Zeile in Spalte B mit Inhalt
Zeile_L = .Cells(.Rows.Count, 2).End(xlUp).Row
Me.ComboBox1.Clear
For Zeile = 2 To Zeile_L
If .Cells(Zeile, 10) = "" Then
varB = .Cells(Zeile, 2).Value
varZellAdr = .Cells(Zeile, 10).Address(False, False, xlA1)
With Me.ComboBox1
.AddItem varZellAdr
.List(.ListCount - 1, 1) = varB
End With
End If
Next
End With
End Sub

In deinem Fall ist es wahrscheinlich zweckmäßiger eine 2-Spaltige Listbox statt einer Combobox für die Anzeige/Auswahl zu verwenden.
Gruß
Franz
Anzeige
AW: Userform, combobox füllen in abhängigkeit von
12.01.2018 18:05:29
Jörg
Hallo Franz,
leider erhalte ich beim Einfügen des Codes einen Laufzeitfehler: "Nicht näher bezeichneter Fehler".
Kannst Du Dir den Code bitte nochmal anschauen?
Mit einem zweispaltigen Listfeld habe ich noch nicht gearbeitet, wie würde der Code dafür lauten?
Und wo finde ich es in der Toolsammlung um es in der Userform einzuzeichnen?
Schon mal besten Dank,
ciao Jörg
Anzeige
AW: Userform, combobox füllen in abhängigkeit von
12.01.2018 18:19:57
Jörg
Hallo Franz,
der Fehler lag bei mir, es war eine kopierte Combobox, wo in RowSource noch etwas drin stand.
Jetzt funktioniert es, allerdings zeigt er nicht den Inhalt von Spalte B sondern die leere Zelladresse.
Könntest Du so nett sein und mir hier noch helfen?
Danke, ciao Jörg
AW: Userform, combobox füllen in abhängigkeit von
12.01.2018 19:48:05
Werner
Hallo Jörg,
schon mal versucht hier von 10 (J) auf 2 (B) zu ändern?
varZellAdr = .Cells(Zeile, 10).Address(False, False, xlA1)
Gruß Werner
Anzeige
AW: Userform, combobox füllen in abhängigkeit von
12.01.2018 22:40:22
Jörg
Hallo Werner,
Danke, ich hab es zwischenzeitlich mit .AddItem varB gelöst.
Von der zweispaltigen Liste lass ich jetzt die Finger, wird sonst zu kompliziert.
Ciao Jörg
AW: Userform, combobox füllen in abhängigkeit von
13.01.2018 10:14:19
fcs
Hallo Jörg,
2-spaltige (mehr-spaltige) Listbox/Combobox:
Über die Eigenschaft "ColumnsCount" stellst du ein wie viele Datenspalten die Box haben soll.
Über die Eigenschaft "BoundColumn" legst du fest, aus welcher Spalte die Value-Eigenschaft der Box übernommen werden soll.
Bei Comboboxen kannst du zusätzlich über "TextColumn" festlegen über welche Spalte die Auswahl eines Wertes erfolgen soll. Dieser wird dann auch angezeigt.
Wie eine mehrspaltige Box mit Daten via AddItem gefüttert wird siehst du ja im Beispiel. Erst per AddItem die 1. Spalte füllen, dann List-Eigenschaft für die weiteren Spalten füllen, wobei hier die Zählung der Spalten bei 0 beginnt.
Falls du mehr als 10 Spalten in der Box haben möchtest, dann funktioniert die AddItem-Methode nicht mehr, dann muss man mit einem Daten-Array und der Eigenschaft "List" der Box arbeiten.
Gruß
Franz
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Combobox in Userform in Excel VBA füllen


Schritt-für-Schritt-Anleitung

  1. Öffne Deine Excel-Datei und gehe zum VBA-Editor (drücke ALT + F11).

  2. Füge eine Userform hinzu: Klicke im Projektfenster mit der rechten Maustaste auf dein Projekt, wähle Einfügen und dann UserForm.

  3. Füge eine Combobox hinzu: Ziehe die Combobox aus der Toolbox auf die Userform.

  4. Füge den folgenden Code in das Code-Fenster der Userform ein:

    Private Sub UserForm_Initialize()
       Dim wks As Worksheet
       Dim Zeile As Long, Zeile_L As Long
       Dim varB
    
       Set wks = ActiveSheet  'Aktives Blatt verwenden
       With wks
           'Letzte Zeile in Spalte B mit Inhalt
           Zeile_L = .Cells(.Rows.Count, 2).End(xlUp).Row
           Me.ComboBox1.Clear
           For Zeile = 2 To Zeile_L
               If .Cells(Zeile, 10) = "" Then
                   varB = .Cells(Zeile, 2).Value
                   Me.ComboBox1.AddItem varB  'Fülle die Combobox
               End If
           Next
       End With
    End Sub
  5. Schließe den VBA-Editor und teste die Userform.


Häufige Fehler und Lösungen

  • Laufzeitfehler: "Nicht näher bezeichneter Fehler": Dieser Fehler kann auftreten, wenn Du eine Combobox kopiert hast, die noch eine RowSource hat. Stelle sicher, dass die RowSource leer ist.

  • Leere Zelladresse statt Wert der Spalte B: Achte darauf, dass Du die richtige Zelle in der Combobox hinzufügst. Verwende Me.ComboBox1.AddItem varB um den Wert aus Spalte B hinzuzufügen.


Alternative Methoden

  • Verwendung einer Listbox: Wenn Du mehrere Spalten anzeigen möchtest, kannst Du anstelle einer Combobox eine Listbox verwenden. Setze die ColumnCount-Eigenschaft, um die Anzahl der Spalten zu definieren, und benutze die AddItem-Methode, um die Werte hinzuzufügen.

  • Daten aus einer externen Quelle: Du kannst auch Daten aus einer Datenbank oder einer anderen Excel-Datei abrufen, um die Combobox zu füllen. Hierzu solltest Du die ADO- oder DAO-Bibliothek verwenden.


Praktische Beispiele

Hier ist ein Beispiel, wie man eine Combobox in einer Userform mit Werten aus einer Excel-Tabelle füllt:

Private Sub UserForm_Initialize()
    Dim wks As Worksheet
    Dim Zeile As Long, Zeile_L As Long
    Dim varB

    Set wks = ThisWorkbook.Worksheets("Daten")  'Blattname anpassen
    Zeile_L = wks.Cells(wks.Rows.Count, 2).End(xlUp).Row
    Me.ComboBox1.Clear

    For Zeile = 2 To Zeile_L
        If wks.Cells(Zeile, 10).Value = "" Then
            varB = wks.Cells(Zeile, 2).Value
            Me.ComboBox1.AddItem varB
        End If
    Next Zeile
End Sub

Tipps für Profis

  • Spalten zählen: Wenn Du eine mehrspaltige Combobox oder Listbox verwendest, stelle sicher, dass Du die ColumnCount- und BoundColumn-Eigenschaften korrekt setzt, um die Daten richtig darzustellen.

  • Fehlerbehandlung: Implementiere Fehlerbehandlungen in Deinem Code, um Laufzeitfehler zu vermeiden. Beispielsweise kannst Du On Error Resume Next verwenden, um Fehler zu ignorieren und den Code fortzusetzen.


FAQ: Häufige Fragen

1. Wie kann ich die Combobox mit einer Dropdown-Liste füllen? Du kannst die Combobox in einer Userform mithilfe des UserForm_Initialize-Ereignisses füllen, indem Du die gewünschten Werte mit der AddItem-Methode hinzufügst.

2. Was ist der Unterschied zwischen einer Combobox und einer Listbox? Eine Combobox ist ein Dropdown-Feld, das dem Benutzer ermöglicht, einen Wert auszuwählen, während eine Listbox mehrere Werte gleichzeitig anzeigt und die Auswahl von mehreren Werten ermöglicht.

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