Variablen aus Liste laden

  • VBScript

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Mono.

    Variablen aus Liste laden

    Schönen guten Abend zusammen,

    Ich stehe momentan vor folgendem Problem und weiß noch nicht wie ich es elegant lösen kann bzw. ob meine Idee überhaupt umsetzbar ist.

    Ich bastle an einer Scriptschnittstelle, in der Werte "vorbehandelt" werden. Dazu lade ich eine Excel-Tabelle und mache dort einen Vergleich
    für welchen Wert eine Variable stellvertretend gesetzt werden soll.

    Die Excel sieht als simples Beispiel so aus:
    Hersteller
    Variable
    Milka
    Schokolade
    Lindt
    Schokolade
    Kinder
    Schokolade
    VW
    Auto
    Audi
    Auto
    BMW
    Auto


    Es ist praktisch immer nur einer der Hersteller vorhanden und soll in einer allgemeinen Variablen "Schokolade" bzw. "Auto" gespeichert werden.
    Nun ist mein Problem, dass ich zwar vorher die Variablen deklariere (Dim Schokolade, Dim Auto) allerdings würde ich dann darauf gerne variabel zugreifen können.
    Sprich:

    Variable "Tabelle(i,2)" = Produkt(i,1)

    Ich stehe allerdings vor dem Problem den "Text" aus der Tabelle im Code als Variable anzusprechen, bzw. geht dies überhaupt?

    Hoffe es war nicht zu viel und mein Problem wird klar :D
    Danke schonmal!
    Mein Problem ist, dass mir der Aufruf fehlt. Bzw. wie ich vermute geht das was ich vorhabe gar nicht.

    Aktuell arbeite ich mich mit einem Select Case um das Problem herum:

    Visual Basic-Quellcode

    1. Dim Variable
    2. Dim Hersteller
    3. Dim Schokolade
    4. Dim Auto
    5. 'Tabelle wird vorher geladen
    6. For i = 1 to MaxAnzahl
    7. Hersteller = Tabelle(i,1)
    8. If Hersteller > 0 then 'Falls Hersteller vorhanden
    9. Variable = Tabelle(i,2)
    10. Select Case Variable
    11. Case "Schokolade"
    12. Schokolade = Hersteller
    13. Case "Auto"
    14. Auto = Hersteller
    15. End Select
    16. End If
    17. Next


    Das funktioniert so, wird aber für viele Hersteller und Produkte zu lang durch die ganzen Cases.
    Optimal wäre halt wenn man bei dem Aufruf Variable = Tabelle(i,2) statt der Variable direkt den entsprechenden Text als Variable ansprechen könnte.
    Vermutlich gibt es aber soetwas nicht? :(
    Ich schrieb ja, dass das so nicht geht, und schon gar nicht dynamisch. Verwende ein Dictionary. Dort hast du ein Key und ein Item. Der Key kann "Auto" heißen und das Item eben was du willst.
    Das ist meine Signatur und sie wird wunderbar sein!

    Mono schrieb:

    Ich schrieb ja, dass das so nicht geht, und schon gar nicht dynamisch. Verwende ein Dictionary. Dort hast du ein Key und ein Item. Der Key kann "Auto" heißen und das Item eben was du willst.


    Ah, ich war gerade meine Antwort am verfassen während deine kam :)
    Ich habe mir gerade mal das Dictionary angeschaut (neu für mich) allerdings ist das ja auch nichts anderes als ein Array bzw. eine Matrix mit fester Zuweisung, oder?
    Das hilft mir in meinem Ziel den Code kurz zu halten bzw. die Variablen nicht alle im Code festlegen zu müssen sondern nur die Tabelle immer zu erweitern, denke ich nicht weiter.

    Dann muss ich wohl damit leben, dass es nicht anders geht.
    Vielen Dank trotzdem! :thumbup:
    Es ist eine Art assoziatives Array und natürlich hilft es dir weiter. Du kannst anhand von Tabelle(i,2) auf den Key zugreifen ohne mit Select Case zu arbeiten. Im Zweifel kannst du auch im Key "Auto" dann wieder ein Dictionary gespeichert haben.
    Das ist meine Signatur und sie wird wunderbar sein!