Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
580to584
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
580to584
580to584
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Combobox 2 Spaltig

Combobox 2 Spaltig
04.03.2005 02:21:49
Heinz
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

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

Betreff
Datum
Anwender
Anzeige
AW: Combobox 2 Spaltig
04.03.2005 08:04:51
Markus
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
AW: Combobox 2 Spaltig
04.03.2005 16:13:18
Heinz
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
Anzeige
AW: Combobox 2 Spaltig
04.03.2005 19:16:44
Markus
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
AW: Combobox 2 Spaltig
04.03.2005 20:16:11
Heinz
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
Anzeige
AW: Combobox 2 Spaltig
04.03.2005 21:31:59
Markus
...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
Anzeige
AW: Combobox 2 Spaltig
05.03.2005 03:31:07
Heinz
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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige