gleich mal vorab... Ich hatte vor ca 10 Jahren in der Berufschule VB gelernt, dann ein bis zwei Jahre spaßeshalber VBA genutzt. Aber seitdem nicht mehr.
Meine VBA Kenntnisse sind schon ziemlich eingerostet.
Folgendes ist mir bekannt: While, If then, Select Case, For Each
Arrays sind mir grundsätzlich ein Begriff, mehr aber auch nicht.
Nun zu meinem Problem:
Ich möchte für die Arbeit ein Programm schreiben, welches mir für wiederkehrende Tiefbau-Projekte die Mengenermittlung vereinfacht bzw abnimmt.
Ich gebe als Grundlage in meine Streckenerfassung abschnittsweise meine Mengen ein (Tiefbau, Rohre, Kabel etc.). Das Makro soll dann anhand dessen die Tabellenblätter "Material", "Tiefbau", "Montage" und "Aufmaß" erstellen.
Ich habe derzeit insgesamt 34 Variablen, welche ich für meine Mengen benötige. Zusätzlich dazu noch einige "Zählervariablen". Es können aber Auftragsbedingt noch welche dazukommen.
Die Mengenermittlung hat bereits funktioniert, ich habe sämtliche Variablen mit den Summen befüllt.
Die Listen die ich nun befüllen möchte sind vom Auftraggeber vorgegeben. Ich scheitere derzeit daran diese Listen mit meinen Werten der Variablen zu befüllen.
Hier eine aus Datenschutzgründen angepasste Liste
Ich stelle mir die Lösung wie folgt vor:
Das Makro soll in der vorgegebenen Materialliste die einzelnen Zeilen durchsuchen. Wenn für ein Bestimmtes Material ein Wert in meiner dazugehörigen Variable vorhanden ist, soll der Wert in die Spalte "Menge" eingetragen werden.
Zwei Probleme:
1.
Die Variablen sind aufgrund Übersichtlichkeit nicht identisch mit den Beschreibungen.
Beispiel:
Variable GfKabelA entspricht Glasfaserkabel 1
Variable GfKabelB entspricht Glasfaserkabel 2
Variable DN100 entspricht DN100 Rohr
Wie kann ich im VBA Code definieren, dass eine Variable einem bestimmten Zelleninhalt entspricht, ohne jede einzelne im Code zuzuordnen?
Es sind insgesamt 43 Zeilen in der Materialliste.
2.
Bei der vorgegebenen Materialliste ist ein separates Tabellenblatt mit optionalem Material, welches nach Bedarf hinzugefügt werden kann. Die Struktur ist die gleiche wie in dem Screenshot oben. Leider kann ich an dieser umständlichen Vorgabe nichts ändern.
Hierfür stelle ich mir folgede Lösung vor (wenn möglich):
Das Makro läuft alle Zeilen durch und trägt die möglichen Werte ein. Wenn dann in meinen Variablen noch Werte "übrig" sind, wird die Liste des optionalen Materials durchsucht und die jeweilige Zeile der Materialliste hinzugefügt.