German Wert einer verschachtelten Variable ?

Discussion in 'German Forum' started by Paulsche, Feb 15, 2009.

  1. Paulsche

    Paulsche Well-Known Member Licensed User

    Folgendes Problem,

    ich möchte einer Variable z.B. "Var1" den Namen einer anderen Variable z.B. Var2 zuordnen, wie kann ich dann den Wert der Variablen Var2 auslesen ?

    Beispiel:

    Var1 = "Var2"

    Ab hier steht mir nur noch Var1 zur Verfügung,
    msgbox(var1) ergibt natürlich "Var2" , ich möchte aber den Wert von "Var2"
    haben.

    Bei Controls geht das über "Control(var1.text)" ,
    sowas bräuchte ich praktisch für Variablen, geht das irgendwie ?
     
  2. klaus

    klaus Expert Licensed User

    Eine ähnliche Methode "Control(var1.text)" wie für die Controls gibt es nicht für Variablen.

    Könntest Du näher erklären was eigentlich Du machen möchtest und warum?
    Vielleicht gibt es eine andere Methode das zu machen.
    Warum den Namen der Variable var2 übernehmen und nicht direkt deren Wert?

    Beste Grüsse.
     
  3. Paulsche

    Paulsche Well-Known Member Licensed User

    ok, ich versuchs zu erklären:

    ich hab ne Schleif für die 12 Monate, es wird eine Linechart gezeichnet.

    For i = 0 to 11
    LineChart.AddPoint(i, TXTboxname & i+1)
    LBL8Jahrsumme.Text = LBL8Jahrsumme.Text + TXTboxname & i+1
    next

    Die Variable TXTboxname soll je nach vorheriger Auswahl eines Buttons
    folgende Variablen haben:
    TXTboxname = "MonatVerbrauch(i)"
    TXTboxname = "MonatLiter(i)"
    TXTboxname = "MonatEUR(i)"

    Ich möchte halt die Routine der Linechart für mehrere Werte benutzen und möchte nicht 3 extra Abfragen mit extra Linechart-Funktion machen.

    OK, das wird zu kompliziert, ich mach es jetzt so, dass ich über select case
    die Variable z.B. MonatVerbrauch(i) entsprechend direkt einfüge.

    Trotzdem Danke für die schnelle Antwort
     
    Last edited: Feb 15, 2009
  4. Paulsche

    Paulsche Well-Known Member Licensed User

    Habs jetzt so gelöst:

    For i = 0 To 11 ' Schleife der 12 Monate
    Select statArt
    Case "verbrauch" ' Verbrauch L/100km
    LineChart.AddPoint(i, MonatVerbrauch(i+1))
    LBL8Jahrsumme.Text = LBL8Jahrsumme.Text + MonatVerbrauch(i+1) ' Berechnung JahresSumme
    Case "eurltr" ' Euro / Liter
    LineChart.AddPoint(i, MonatEURLTR(i+1))
    LBL8Jahrsumme.Text = LBL8Jahrsumme.Text + MonatEURLTR(i+1) ' Berechnung JahresSumme
    Case "eur" ' Rechnungsbetrag
    LineChart.AddPoint(i, MonatEUR(i+1))
    LBL8Jahrsumme.Text = LBL8Jahrsumme.Text + MonatEUR(i+1) ' Berechnung JahresSumme
    End Select
    Next

    Irgendwie klappt das mit dem einrücken nicht, hoffe es ist trotzdem leserlich
     
  5. klaus

    klaus Expert Licensed User

    Hallo Paulsche,

    Es gäbe eine Möglichkeit eine Matrix für diese Variablen zu nützen:
    Zum Beispiel:
    Dim MonatVerbrauch(100,3)
    MonatVerbrauch(i,0) = MonatVerbrauch
    MonatVerbrauch(i,1) = MonatLiter
    MonatVerbrauch(i,2) = MonatEuro
    statArt= 0 oder 1 oder 2

    Das gleiche würde auch mit Type Variablen funktionieren.
    Dim Type(Verbrauch,Liter,EUR)Monat(100)
    die Variablen heissen dann:
    Monat(i).Verbrauch oder Monat(i,0)
    Monat(i).Liter oder Monat(i,1)
    Monat(i).Euro oder Monat(i,2)
    usw.
    statArt= 0 oder 1 oder 2
    In diesem Fall kannst Du beide Schreibweisen benützen, im Programm die linke zur Übersichtlichkeit und in der Routine die rechte zur Vereinfachung des Codes..

    Hoffe dass es verständlich ist.

    Deine Lösung ist vielleicht übersichtlicher.

    Beste Grüsse.
     
  6. Paulsche

    Paulsche Well-Known Member Licensed User

    Hi Klaus,

    danke, ja das würde bestimmt auch gehen,
    habs jetzt aber der übersichtlichkeit wie beschrieben gelöst.

    Hab mir nur um paar Zeilen sparen zu wollen mind. 2 Std. das Hirn
    zermattert, tztztztz , na ja.
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice