Hallo Claus,
Claus Busch schrieb:
> Claus Busch:
>
>> vardata = Range("A1:A20")
>> With Application
>> vartmp = .Transpose(.Index(vardata, 0, 1))
>> myStr = Join(vartmp, ",")
>> End With
>
> du kannst alle Werte einer ComboBox auf einen Rutsch in ein
> eindimensionales Array einlesen mit z.B.:
> varCombo = ComboBox1.List
> Ebenso kannst du einer ComboBox auf einen Rutsch ein Array zuweisen:
> ComboBox1.List=MeinArray
>
> Du könntest also das Array varCombo mit InStr durchlaufen...
Das ist sehr interessant und könnte tatsächlich die Lösung ohne Schleife
sein!
> ...und wenn du
> einen Wert behalten möchtest varTmp neu dimensionieren und diesen Wert
> hinzufügen und nach Durchlauf der Schleife der Combobox diese Werte
> zuweisen mit
> ComboBox1.List = varTmp
Klingt wieder nicht nach dem was ich beabsichtige.
Wenn ein Combobox.text aus einer alten Liste in der Box steht und diese
Box eine neue Liste bekommt die diesen Text AUCH enthält, soll er in der
Box stehenbleiben.
Ansonsten soll ein Text meiner Wahl (aus der neuen Liste) per ListIndex
in der Combobox erscheinen.
Ich habe nicht vor, einen Wert/Text zu behalten und in die neue Liste
neu aufzunehmen.
Trotzdem ist der Ansatz mit dem Array sehr spannend.
Im Moment baue ich erstmal meine Idee mit der Schleife weiter. Dann habe
ich erstmal ein Schema wie der Code allgemein ablaufen soll.
Leider hackt es z.Z. mit dem Laufzeitfehler 1004:
' ----------------------------------------------------
Set RnList = shAu.Range(Cells(i, 22), Cells(i, 30))
geht ohne Fehlermeldung, ist aber sinnlos, weil falsches Blatt,
test1 = shPrg.Name
"shPrg" ist das richtige Blatt, der Name wird richtig erkannt, und
Set RnList = shPrg.Range(Cells(i, 22), Cells(i, 30))
bringt den Laufzeitfehler. "i" ist immer 44. In den Zellen um Spalte 30
könnte evtl. nichts enthalten sein, kann das der Grund sein?
' --------------------------------------------------
Da bin ich jetzt am suchen...
Hans