Comboboxen in Userform füllen

klaus45

Newbie
Registriert
Aug. 2011
Beiträge
2
Hallo liebe Fangemeinde,
mein Problem ist für viele bestimmt nur ein Klacks, für mich aber ein riesengroßer Brocken. In einem Userform sind mehrere Comboboxen. Die eingetragenen Werte werden auch in die Tabelle geschrieben. Das Füllen der Boxen mit den bereits eingetragenen Werten läuft nicht richtig. Die Boxen holen sich die Werte immer aus aufeinanderfolgenden Spalten. Wie löse ich das so, dass die Box die richtige Spalte ausliest? Im Anhang eine Exceldatei (in txt umbenannt), die das Problem verdeutlicht.
Viele Grüße
Klaus45
 

Anhänge

Hio,

ich würde mir für jede deiner Namensspalte im Namensmanager einen Bereich anlegen (der dynamisch mit der Spaltenlänge mitwächst). Bspw. für Spalte K_Vname:
Code:
=BEREICH.VERSCHIEBEN($B$3;0;0;ANZAHL2($B:$B)-1;1)


Damit kannst du deine Comboboxen dann füllen:

HTML:
For Each cName In Sheets("Tabelle1").Range("Dein_Bereich")
  With Me.ComboBox1
    .AddItem cName.Value
  End With
Next cName
 
Zuletzt bearbeitet:
Hi
muss ich das für jede Combo einzeln anlegen oder gibt es dort elegantere Möglichkeiten?
Klaus45
 
Geht natürlich auch in einer Schleife. Dann müssen die Bereiche und die Boxen entsprechend benannt werden (bspw. BoxA, BereichBoxA, BoxB, BereichBoxB):

Code:
Private Sub UserForm_Initialize()

[COLOR="green"]'durchläuft alle Steuerelemente[/COLOR]
For Each ctrl In Me.Controls 
  [COLOR="Green"]'prüfen ob aktuelles Steuerelement eine Combobox ist[/COLOR]
  If TypeOf ctrl Is msforms.ComboBox Then
    [COLOR="Green"]'durchläuft den Bereich "BereichName_der_Box"[/COLOR]
    For Each cName In Sheets("Tabelle1").Range("Bereich" & ctrl.Name) 
      [COLOR="green"]'Box mit aktuellem Wert aus Bereich füllen[/COLOR]
      With Me(ctrl.Name) 
        .AddItem cName.Value
      End With
    Next cName
  End If
Next ctrl

End Sub
 
Zuletzt bearbeitet:
Zurück
Oben