Yo,
also ich habe zumindest den Fehler gefunden, warum es zu dem Laufzeitkonflikt kam.
Der Code erzeugt ein eindimensionales Array, d.h. der User dürfte nur noch folgende Abhängigkeiten wählen
Bsp.:
A B C D E F
56 56 Marke1 L Blau BL
56 56 Marke2 M Gelb GE
56 56 Marke3 N Grün GR
81 81 Marke2 O Gelb GE
81 81 Marke4 P Schwarz SW
56 Marke1 --> nur Farbe Blau
56 Marke2 --> nur Farbe Gelb
Genau das will ich ja nicht. Die Befüllung in der ComboBox (auf der UserForm) ist zwar richtig, aber bei sämtlichen Ausgaben in der Textbox, bekomm ich natürlich Konflikte, wenn der User sich nicht an das eindimensionale Array stringent hält.
Lass ich dann die Befüllung auch noch über ne Schleifeniterierung laufen, kommt natürlich prompt besagter Laufzeitfehler. Macht auch durchaus Sinn.
Mein Ziel:
Der User soll z.B. Design 56 auswählen können, erhält dann nur die Marken 1,2 und 3 angezeigt oder Design 81, dann nur die Marken2 und 4, vom Design ist auch die Farbmöglichkeit abhängig. So kann der User bei Design 56 nur zwischen Blau, gelb und grün auswählen, bei Design 81 nur zwischen Gelb und Schwarz.
Am Ende seiner Auswahl soll ein Code generiert werden: Er möchte ein gelbes Design 56 der Marke 2: L56-GE
Ohne die Abhängigkeit vom Design hab ich das auch schon lauffähig gekriegt.
Sogar mit Abhänigkeit, aber auch nur, wenn der Kd "alles aus einer Reihe" wählt. Z.B. 81-->Marke2---> Gelb.
Nun fallen mir spontan zwei Lösungen ein, die mein Problem umgehen könnten:
Variante 1:
Für jedes Design erstell ich ein Tabellenblatt (wir haben derzeit ca 20 Designs --> 21 Tabellenblätter) und zwei UserForms. In der ersten UserForm wählt User nur das Design aus, abhängig vom Design wird auf ein anderes Tabellenblatt zugegriffen.
Variante 2:
Ich segmentiere quasi meine Tabelle. Sagen wir z.B. Bereich A1:F3 ist nur für Design 56 zuständig und Bereich A3:F5 nur für Design 81. Allerdings kann ich das ja so gar nicht meiner den RowSource Eigenschaft meiner jeweiligen ComboBox verständlich machen.
Was mir so zu Variante spontan einfällt:
Wieder erstelle ich zwei UserForms (das möchte ich sowieso, da mir das von der Aufteilung sehr gut gefällt), auf der 1. UserForm wählt der User nur das Design aus. In Abhängigkeit von dieser Auswahl wird mittels einer case-Fallunterscheidung erst die RowSource Eigenschaft gesetzt.
Beispiel:
Tabelle1:
56
78
81
Tabelle 2:
Marke1 L Blau BL
Marke2 M Gelb GE
Marke3 N Grün GR
Marke2 O Gelb GE
Marke4 P Schwarz SW
User wählt 56 aus:
Neue UserForm erscheint und im Hintergrund wird nun die zweite Tabelle aktiv, deren RowSource Eigenschaftswerte haben sich dann quasi dynamisch zur Auswahl aus Tabelle1 generiert.
RowSource Eigenschaftswerte sind nun für ComboBox1 $A$1:$B$3 für ComboBox2 $C$1:$C$3
Bei Userauswahl Design 81 passiert dann analog:
Eigenschaftswerte sind nun für ComboBox1 $A$4:$B$6 für ComboBox2 $C$4:$C$6
Ist das in VBA möglich?
Bester Gruß,
Daniel
|