AW: Comboboxen - u. a. gleicher ListIndex
21.11.2006 19:32:43
Chris
Hallo Erich,
entschuldige die späte Antwort.
Mit deiner Vermutung - Stichwort Verzeichnisbaum - liegst du richtig. Ich wollte mal schauen, ob ich so etwas in der Art einigermaßen hinkriege.
> Da hast du dir einiges vorgenommen...
:)
Die Unterordner (siehe meine Mappe) sind fest vorgegeben; die Inhalte der dafür gedachten Comboboxen habe ich absichtlich in andere Tabellenblätter gestellt, weil ich mir denke, dass man sie so am besten aktualisieren kann. Weiß noch nicht, ob ich damit richtig liege.
Deine Beispielmappe - erneut vielen Dank - hat mir wieder sehr geholfen.
Den Großteil des Codes kann ich einigermaßen nachvollziehen - alles verstehen tu' ich aber noch nicht.
Im Moment bin ich dabei, zu den bereits erstellten vier Comboboxen weitere fünf automatisch hinzuzufügen. Das habe ich auch hinbekommen und sogar die Positionierung klappt.
Was ich aber nicht hinkriege und auch nicht verstehe: Diese fünf neuen Comboboxen sollen ebenfalls wieder mit Inhalt aus einem anderen Tabellenblatt gefüllt werden.
Das Komische: Die erste der neuen Comboboxen wird mit dem Inhalt gefüllt, der für die letzte Combobox vorgesehen ist. Leider habe ich noch zu wenig Ahnung, um gezielt auf Fehlersuche zu gehen. Alles, von dem ich mir denken könnte, dass es die Ursache sein könnte, habe ich schon versucht.
Der Code zum Erstellen dieser neuen Comboboxen (den ich in das Modul2 gestellt habe) ist identisch mit dem, den du in deiner Mappe benutzt hattest; angepasst wurde die Positionierung, der Name der Comboboxen sowie die Zeile "For intI = 5 To 9".
Hier nochmal der ganze Code:
Sub combos_test_einfuegen()
Dim intI As Integer, lngLast As Long
For intI = Sheets("Uebersicht").OLEObjects.Count To 5 Step -1 ' nur zum Testen: alle löschen
Sheets("Uebersicht").OLEObjects(intI).Delete
Next intI
For intI = 5 To 9
Sheets("Uebersicht").OLEObjects.Add ClassType:="Forms.ComboBox.1", _
Left:=ActiveSheet.Cells(3 * intI + 5, 11).Left, _
Top:=ActiveSheet.Cells(3 * intI + 5, 11).Top + ActiveSheet.Cells(3 * intI + 5, 11).RowHeight / 2, _
Width:=147, _
Height:=17.25
With Sheets("Uebersicht").OLEObjects(intI)
lngLast = Sheets("Dropdown_Test").Cells(Rows.Count, 3 * intI - 2).End(xlUp).Row
If lngLast < 3 Then lngLast = 3
' ListFillRange per Formel (oder individuell?) belegen:
.ListFillRange = "Dropdown_Inhalte_Test!" & _
Range(Cells(7, 4 * intI - 2), Cells(lngLast, 3 * intI - 2)).Address
.Name = "Liste_Test" & intI
With .Object
.ListIndex = 0
.BorderStyle = fmBorderStyleSingle
.ForeColor = RGB(0, 0, 255)
With .Font
.Bold = False
.Size = 10
.Name = "Arial"
End With
End With
End With
Next intI
' Application.ScreenUpdating = True
End Sub
Die vier vorher erstellten Comboboxen werden nach wie vor korrekt erstellt und "befüllt".
Von den fünf neuen Comboboxen werden alle erstellt, aber nur die erste bekommt Inhalt (das, was in der letzten stehen sollte). Hast du eine spontane Idee, was die Ursache sein könnte?
Gruß und besten Dank,
Chris L