Hallo Leute,
mein Problem ist folgendes.
Ich habe eine recht lange Liste an Projekten, an denen gearbeitet wird. Dazu habe ich ein Script geschrieben, mit dem man neue Einträge/Projekte hinzufügen kann. Das funktioniert auch sehr gut.
Das Problem, das ich habe, bezieht sich dann auf die Änderung von einzelnen Zellen dieser Liste. DAzu muss ich die Projekte einlesen und in einem Dropdownmenü zur Auswahl stellen. Derzeit habe ich das mit folgendem Code gelöst.
Sheets("Projektübersicht").Range("A2").Select
liste = Array(ActiveCell.Offset(1, 2) & leer + ActiveCell.Offset(1, 0), ActiveCell.Offset(2, 2) & leer + ActiveCell.Offset(2, 0), ActiveCell.Offset(3, 2) & leer + ActiveCell.Offset(3, 0), ....)
Das Ergebnis ist dann immer ein String, der in etwa so ausschaut: "Projektart Projektort", "Projektart2 Projektort2".
______________________________________________________________________________________
Und diese Einträge des Arrays kann ich dann wieder ins Dropdownmenü einlesen mit folgendem Code.
With Userform_projekt_arch.Dropdownmenue
If liste(0) = " " Then
GoTo L1
Else
.AddItem (liste(0))
End If
If liste(0) = " " Then
GoTo L1
Else
.AddItem (liste(0))
End If
...
Damit wird überprüft, ob der String Daten enthält, wenn ja, wird er in das Menü aufgenommen, wenn nicht, wird die "With Funktion" beendet.
Damit wird das Dropdownmenü immer auf die Projekte angepasst, die eingetragen sind. Von dem her ist es eh schon relativ variabel gehalten. Es ist auch nicht das Problem, dass es nicht funktioniert. Funktioniert sogar einwandfrei das Programm.
Das eigentliche Problem ist, dass ich bei dem Array jeden Eintrag einzeln reinschreiben muss und auch den Eintrag ins Dropdownmenü für jeden einzelnen Eintrag definieren muss. Das gibt erstens ne Unmenge an Code, und zweitens ist die Arrayfunktion auf 128 Einträge begrenzt. Ich weiß, dass es die möglichkeit gäbe mit mehreren Dimensionen zu arbeiten, aber wenn ich das noch über mehrere Dimensionen mach, dann werd ich gar net mehr fertig mit Code schreiben... :)
Gibt es da vielleicht eine Möglichkeit, mit einer schleife oder einer anderen Funktion, wie ich den Code reduzieren kann und trotzdem die variable aufnahme der Daten gewährleisten kann?
Ist vielleicht ein wenig kompliziert erklärt. Falls ich das noch näher ausführen muss, bitte kurz bescheid sagen, dann mach ich das :)
Schöne Grüße
Daniel |