Combobox 2 Spaltig

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

Betrifft: Combobox 2 Spaltig
von: Heinz
Geschrieben am: 04.03.2005 02:21:49
Hallo Forum,
ich habe das Problem schon einmal geschildert.
Hier noch mal weil die Lösung welche mir von Rene Grallinger angeboten wurde nicht so recht funzt, davon aber weiter unten mehr.
Ich habe eine Userform mit einer Combobox.
In diese Combobox lade ich Daten aus einer Tabelle.
Gelöst wurde das folgendermaßen:


Private Sub UserForm_Initialize()
Dim lr%
lr = Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row
Me.ComboBox1.RowSource = "Tabelle1!d4:d" & lr
Me.ComboBox1.ListIndex = 0
Das geht auch wunderbar.
Die Daten werden anschliesend über ComboBox1_change weiter verarbeitet.
Allerdings hätte ich gerne die Werte einer weiteren Spalte gleich in der Combox mit angezeigt um die Auswahl einfacher zu gestalten.
Da ich diese Combobox in verschiedenen UserForms nutze liegt die zweite Spalte nicht immer direkt neben der bisher genutzten. Also um bei obigem Beispiel zu bleiben brauche ich mal Spalte e, mal Spalte b oder mal Spalte f.
Das bekomm ich aber nicht hin.
Noch eine Anmerkung.
Das Ändern des Adressbereiches "Tabelle1!d4:d" & lr in "Tabelle1!d4:e" & lr
funktioniert nicht.
Die Lösung von Rene sah folgendermaßen aus:
Userform erstellen und Listenfeld einfügen
Code einfügen

Private Sub UserForm_Initialize()
Dim Listenfeld()
Dim MaxRecords As Integer
Dim intI As Integer
    intI = 4
    MaxRecords = 1
    Do While Range("D" & intI).Value <> ""
        MaxRecords = MaxRecords + 1
        intI = intI + 1
    Loop
    
    MaxRecords = MaxRecords - 2
    
    intI = 4
    ReDim Listenfeld(MaxRecords, 2)
    Do While Range("D" & intI).Value <> ""
        Listenfeld(intI - 4, 0) = Range("D" & intI).Value
        Listenfeld(intI - 4, 1) = Range("D" & intI).Offset(0, 1).Value
        intI = intI + 1
    Loop
    Me.ListBox1.List() = Listenfeld
    Me.ListBox1.ColumnCount = 2
End Sub


Wie zu ersehen ist bezieht sich die Lösung auf eine Listbox.
Ich habe aber eine ComboBox!
AUch funzt das mit der Listbox nicht richtig, weil immer nur eine Reihe angezeigt wird. Scrolle ich nach unten kommt nix mehr.
Ich habe versucht anzupassen indem ich aus "Me.ListBox1...." ein "Me.ComboBox1..." gemacht habe.
Auch hier bekomme ich nur eine Reihe angezeigt. Wenn ich dann den angezeigten Wert anklicke um ihn auszuwählen verschwindet der zusätzlich angezeigte Wert.
Wer kann mir hier helfen?
Vielen Dank im Voraus
Gruß
Heinz
Bild

Betrifft: AW: Combobox 2 Spaltig
von: Markus
Geschrieben am: 04.03.2005 08:04:51
Hallo Heinz,
hast Du denn angegeben, dass die ComboBox 2spaltig sein soll, also ColumnCount = 2?
Dann sollte die Angabe des Adressbereichs (ListFillRange) auch funktionieren:
'Tabelle1'!d4:e & lr (Hochkomma beachten!)
Gruß,
Markus
Bild

Betrifft: AW: Combobox 2 Spaltig
von: Heinz
Geschrieben am: 04.03.2005 16:13:18
Danke Dir Markus,
Also ich würde das jetzt so verstehen:
Me.ComboBox1.RowSource = "Tabelle1!d4:d;f" & lr
Me.ComboBox1.ColumnCount = 2
Me.ComboBox1.ListIndex = 0
Das funzt auch soweit.
Allerdings wenn ich dann einen Wert ausgewählt habe wird in der CombBox nur die erste Spalte (also hier d) angezeigt. Beim auswählen seh ich die beiden Spalten.
Auch habe ich das Problem wenn ich nun Spalte d und z.B. g brauche, schaff ich das so nicht ohne die Spalten e und f auch zu sehen (natürlich nur in Verbindung mit hochsetzten des ColumnCount-Wertes
Wie kann ich diese Adressangabe noch einbauen?
Gruß
Heinz
Bild

Betrifft: AW: Combobox 2 Spaltig
von: Markus H.
Geschrieben am: 04.03.2005 19:16:44
Hallo Heinz,
ich hatte vor einigen Tagen ein ähnliches Problem. Wenn die Spalten nicht nebeneinander liegen (hab ich doch richtig verstanden oder?), dann schreibst Du Deine Daten zunächst in ein Array und dies wiederum übergibst Du an die ComboBox. Die Hilfe hat da ein ganz gutes Beispiel.
In diesem Fall siehst Du in der Tat in der ComboBox nur einen Wert (also aus einer Spalte), in der "ComboListe" aber alle. Ich habe mir so geholfen, dass ich den ComboBox.Value und die zugehörigen Werte aus den anderen Spalten in eine Zelle direkt daneben geschrieben habe.
Gruß,
Markus
Bild

Betrifft: AW: Combobox 2 Spaltig
von: Heinz
Geschrieben am: 04.03.2005 20:16:11
Hallo Markus,
ja, hast Du richtig verstanden.
Allerdings kann ich die Werte der entfernt liegenden Spalte nicht daneben kopieren.
Wäre, denke ich mal, ein riesiger Aufwand, da ich das nur innerhalb der Combobox brauche, wenn ich dann selektierte Werte zurückschreibe muss ich dann jedesmal diese Spalte wieder löschen und danach wieder aufrufen.
Wegen der Hilfe, nach welchem Begriff hast Du da gesucht?
Bin wohl zu doof dazu. Könntest Du mir ein Bespiel schreiben?
Gruß
Heinz
Bild

Betrifft: AW: Combobox 2 Spaltig
von: Markus
Geschrieben am: 04.03.2005 21:31:59
...aus der Excel-Hilfe:
Dim MyArray(6,3)

Private Sub UserForm_Initialize()
    Dim i As Single
     'The 1-st list box contains 3 data columns
    ListBox1.ColumnCount = 3        
    'The 2nd box contains 6 data columns
     ListBox2.ColumnCount = 6        
    'Load integer values into first column of MyArray
    For i = 0 To 5
        MyArray(i, 0) = i
    Next i
    'Load columns 2 and three of MyArray
    MyArray(0, 1) = "Zero"
    MyArray(1, 1) = "One"
    MyArray(2, 1) = "Two"
    MyArray(3, 1) = "Three"
    MyArray(4, 1) = "Four"
    MyArray(5, 1) = "Five"
    MyArray(0, 2) = "Zero"
    MyArray(1, 2) = "Un ou Une"
    MyArray(2, 2) = "Deux"
    MyArray(3, 2) = "Trois"
    MyArray(4, 2) = "Quatre"
    MyArray(5, 2) = "Cinq"
    'Load data into ListBox1 and ListBox2
    ListBox1.List() = MyArray
    ListBox2.Column() = MyArray
End Sub

Anstatt der Zahlen (Zero, One, Two,...) nimmst Du hier Deine Spalten/Zellen.
Mach mal einen Rechtsklick auf die ComboBox und lass Dir die Eigenschaften anzeigen. Markiere den Wert "ColumnCount" und drück mal die F1-Taste...
Wegen der Spalte haben wir uns mißverstanden.
Meine ComboBox hat 3 Spalten (A,B,C). ComboBox.Value gibt nur Spalte A zurück, obwohl in der Liste A,B und C angezeigt werden. Neben der ComboBox schreibe ich in A14 den ComboBox.Value, in B14 den zugehörigen Wert (also Spalte B der ComboBox) und in C14 den 3. zugehörigen Wert (Spalte C der ComboBox). Was nicht ausgewählt wurde interessiert in diesem Augenblick nicht. Wird ein anderer Wert in der ComboBox ausgewählt, aktualisiere ich den Wert in den Zellen A14, B14 und C14.
Gruß,
Markus
Bild

Betrifft: AW: Combobox 2 Spaltig
von: Heinz
Geschrieben am: 05.03.2005 03:31:07
Hallo Markus,
danke für die Mühe. Irgendwie hab ich das so jetzt nicht hinbekommen, keine Ahnung warum.
Ich habe jetzt von Hand die Tabellen umgebaut und so die Spalten arrangiert das ich die Daten entsprechend einlesen kann.
Gruß
Heinz
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Combobox 2 Spaltig"