rem001
Goto Top

Variablen mit einer Schleife auslesen

Ich möchte in VB2008 mit einer Schleife Variablen auslesen

Vorhanden sind 14 Variablen vom Typ String, die als Public deklariert sind. Sie unterscheiden sich nur durch eine abschließende Numerierung. Z1, Z2, ... Z14. Diese möchte ich in einem Durchgang mit einer Schleife auslesen und weiterverarbeiten.

Dim Z as string = "Z"
dim i as integer
dim y as string

for i = 1 to 14
y = Z & i
debug.print y
next

Das funktioniert natürlich nicht, da wird mir Z1, Z2, ... Z14 ausgegeben. Ich möchte aber den Variableninhalt von Z1, Z2, ... Z14 haben. Ist das irgendwie möglich?

Danke für die Hilfe.

Content-ID: 123188

Url: https://administrator.de/contentid/123188

Ausgedruckt am: 20.11.2024 um 17:11 Uhr

TsukiSan
TsukiSan 21.08.2009 um 09:27:40 Uhr
Goto Top
Wo bleibt die Höflichkeit?

Weiterhin ist zu bemerken, daß dein Programmschnipsel funktioniert!
Er gibt dir genau das aus, was du programmiert hast. Software tut nicht heute DIES und morgen DAS, auch wenn es manchmal so den Anschein hat.
Wenn du für die Variable "Z" den Wert "Z" fest zuweist, dann steht da auch "Z" drinnen. Wo ist das Problem?

Von welchen anderen String-Variablen sprichst du noch? Wo stehen diese?

Gruß
Tsuki
bastla
bastla 21.08.2009 um 11:03:25 Uhr
Goto Top
Hallo ReM001 und willkommen im Forum!

[OT] Ein "Ich möchte ..." eignet sich wirklich nicht besonders gut als Begrüßung ... [/OT]
Deinen Ansatz könntest Du zwar in VBScript umsetzen mit
For i = 1 To 3
    WScript.Echo Eval("Z" & i)  
Next
für VB2008 kenne ich aber keine entsprechende Funktion ...

... wobei Du ja eigentlich versuchst, Symptome zu behandeln - die Frage ist doch eher: Wie sind die Werte in diese 14 Variablen gekommen und was könnte daher an dieser Stelle geändert werden? Außerdem: Wie soll denn die Weiterverarbeitung erfolgen?

Grüße
bastla
ReM001
ReM001 21.08.2009 um 12:35:44 Uhr
Goto Top
Hallo Tsuki und Bastla,

ihr habt recht, ohne Gruß ist irgendwie gegen die Etikette. Dabei ist das gar nicht meine Art. Ich war wohl so sehr in mein Problem vertieft, dass ich mit der Tür ins Haus gefallen bin. Kommt nicht wieder vor.

Die Werte sind durch Auswahl in einer Listbox in Labels geschrieben worden und stellen in diesem Fall die Namen von 14 Sportlern dar. Diese Werte und weitere Leistungswerte sollen in Excel weiterverarbeitet werden. Diese Leistungswerte stehen auch in Variablen, die durch eine fortlaufende Nummer am Ende gekennzeichnet sind. Diese Leistungswerte haben 128 Ausprägungen. Wenn es mir also nicht gelingt diese Variableninhale mit einem oder mehreren Schleifendurchläufen auszulesen, muss ich 14 * 128 Einzelanweisungen schreiben (mindestens). Und das möchte ich mir ersparen. Ich versuche mal, ob ich mit Bastlas VBScript weiterkomme.

Danke für die Mühe
Gruß
Reinhard
bastla
bastla 21.08.2009 um 14:02:42 Uhr
Goto Top
Hallo ReM001!

Du solltest beim Schreiben in die Labels ansetzen und (begleitend) den entsprechenden Namen in ein Arrayfeld eintragen ...

Wie sieht denn der Code für das Schreiben in die Labels aus?

Grüße
bastla
ReM001
ReM001 21.08.2009 um 15:44:28 Uhr
Goto Top
Hallo bastla,

danke für den Tipp. Ich werde mich mit Arrays beschäftigen. Da stehen dann die Daten, die ich brauche, schon in Zeilen und Spalten, so wie ich sie haben will. Warum bin ich nicht selber darauf gekommen? Einfach genial, genial einfach.

Die Namen der Sportler stehen in einer Textdatei, die zeilenweise ausgelesen und in eine Listbox eingetragen werden. Beim Klicken auf einen Listboxeintrag kommt eine Abfrage "Spieler okay?". Wenn die bestätigt wird, wird der Listboxeintrag in das nächste freie Label übernommen und in der Listbox gelöscht, um Doppeleinträge zu vermeiden. Den genauen Code möchte ich Dir ersparen, obwohl Du bestimmt Optimierungsvorschläge hättest. Aber ich bin kein Bremer ...., schade, ich finde hier keinen Smiley. Nochmals danke und sorry für meinen unpassenden Einstieg heute Morgen.

Schönen Gruß
Reinhard

bastla,
Dein Beitrag hebt sich wunderbar von denen in anderen Foren ab. Dort habe ich auch schon gelesen: ... der Beitrag ist unwürdig für ein Forum, mache Dich erstmal kundig ...