Hi!
Ich würde mit die ganze Programmiererei mit den verschachtelten Schleifen ersparen, weil es ziemlich unübersichtlich ist. Mein Vorschlag wäre folgender:
Du nimmst dir ein eindimensionales Feld von Typ String und baust - je nach Bedarf und Anzahl - diesen String in z.B. 3er-Gruppen auf. Dieses Array weist soviele 3erGruppen auf, wie Abstufungen vorhanden sind (bei dir „Station“ + „Tisch“ + „Teller“). Die maximale Anzahl der Elemente ergibt sich aus den Faktoren „Anzahl Stationen“ x „Anzahl Tische“ x „Anzahl Teller“. Besser ist es jedoch hingegen, mittel „ReDim Preserve“ das Array dynamisch zur Laufzeit zu erstellen.
Dein Bsp.:
„Station1“
---- | ---- „Tisch1“
---- | ---- „Tisch2“ (über Schleife: in Station1 sind Tisch1
und Tisch2)
---- | ------- | ---- „Teller1“ (Schleife: in Tisch2 gibt es
einen Teller1)
„Station2“
---- | ---- „Tisch3“
usw.
Station1 ist vorhanden => erste 3er-Gruppe ist „001“
Tisch1 ist in Station1 vorhanden => Erweiterung um „001“
Teller1 ist in Tisch1 nicht vorhanden => Erweiterung um „000“
==> erstes Element des eindimensionalen Textarrays wäre damit „001001000“
Für „Station1“, „Tisch2“ und „Teller1“ ergibt sich „001002001“
Für „Station2“, „Tisch3“ und „Teller1“ (nicht vorhanden) ergibt sich „002003000“
Damit hättest du jetzt ein Array aus drei Textelementen:
Vorgabe(1) = „001001000“
Vorgabe(2) = „001002001“
Vorgabe(3) = „002003000“
Das gleichst du jetzt gegen das zweite Array ab:
Vergleich(1) = „001002001“
Vergleich(2) = „002003000“
For ZaehlerVorgabe = 1 to 3
bGefunden = False
For ZaehlerVergleich = 1 to 2
If Vorgabe(ZaehlerVorgabe) = Vergleich(ZaehlerVergleich) Then
bGefunden = True
Exit For
End If
Next ZaehlerInnen
If Not bGefunden Then
'*** weitere Verarbeitung ***
End If
Next ZaehlerAussen
Ob du 3er-, 2er- oder 5er-Gruppen nimmst, hängt allein von der Anzahl der „Stationen“, „Tische“ und „Teller“ ab. Die Anzahl der Gruppen innerhalb eines Array-Eintrages von der Schachtelungstiefe (jetzt sind es drei Gruppen, nimm noch zwei weitere Hierarchiestufen hinzu, hast du fünf Hierarchiestufen, ohne in der Vergleichsauswertung tiefergestaffelte Arrays benutzen zu müssen (und die Array-Einträge sind mit etwas Cleverness in jedem Texteditor/Debugger lesbar!)
Grüße
Siegfried
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]