wie kann ich den Inhalt einer Variablen a von Zeichenkette zu Wert ändern?
a = "kst1" zu b = kst1
muss doch irgendwie so aussehen:
b = GänseFüsschenWeg(a)
Heissen Dank
TE
wie kann ich den Inhalt einer Variablen a von Zeichenkette zu Wert ändern?
a = "kst1" zu b = kst1
muss doch irgendwie so aussehen:
b = GänseFüsschenWeg(a)
Heissen Dank
TE
in Deinem Beispiel gibt es keine Chance. Es handelt sich um eine Zeichenkette und die wird immer eine Zeichenkette bleiben, ob mit oder ohne Anführungszeichen.
Gruß
Peter
Na ich probier mal
Danke Dir
TE
Ich verstehe die Aufgabenstellung nicht.
Gruß Jörg
Klappt natürlich nicht.
Gelöst habe ich das jetzt mit FOR EACH kst IN ARRAY(kst1, kst2, ..., kst12)
Ich gebe der Lösung nur eine 2, da ich mich hiermit auf die maximal mögliche Anzahl von Variablen festlege, nämlich 12.
Eigentlich steht aber die Anzahl nicht wirklich fest - sollte dann doch mal ein LKW zur Flotte dazukommen (also eine weitere Kostenstelle kst eröffnet werden müssen), gibt es in der Tabelle, aus der heraus ich diese Kostenstellenauswertung hiermit mache, auch ein weiteres Kennzeichen - schon muss ich wieder im Code rumpopeln, um eine [kst13] einzufummeln.
Naja, ich lege ein wenig Reserve an, aber übertreiben kann man es auch nicht, sonst läuft es ja {n - vorhandene kst} mal umsonst durch.
Eigentlich ist es eher eine Programmierstil-frage. Meiner Auffassung nach muss ein gutes Makro unter allen erdenklichen Umständen funktionieren, und dazu gehört auch, keine prinzipiellen Beschränkungen einzubauen.
Zum selben Problem siehe auch https://www.herber.de/forum/messages/225323.html
hier gings darum, den Variablen [kstx] die Kennzeichen zuzuweisen, und zwar derart, dass beim Durchlauf nur soviele Variablen überhaupt belegt sind (nämlich mit den verschiedenen Kennzeichen), wie auch verschiedene Kennzeichen in dem aktuellen Abschnitt der Tabelle vertreten sind.
Schon bei diesem Mammut-Algorithmus musste ich zähneknirschend eine maximale Anzahl von Variablen akzeptieren:
For r = ZEfirstrow To lastrow
If Cells(r, 8).Text = ZEdat Then
rkst = Cells(r, 5).Text
If ksta = "" Then ksta = rkst
If kstb = "" And rkst <> ksta Then kstb = rkst
If kstc = "" And rkst <> ksta And rkst <> kstb Then kstc = rkst
If kstd = "" And rkst <> ksta And rkst <> kstb And rkst <> kstc Then kstd = rkst
usw
End If
Next r
Du kannst Dir vorstellen, dass die AND-Verknüpfungen in der IF-Zeile schnell länglich werden.
Naja, darf der Chef halt keinen neuen LKW kaufen.
Schlaf schön und herzlichen Dank
Thomas
Da steht in etwa, sowas: (Laienhaft erklärt)
Hallo Thomas, besser als 12 Variablen kst1 bis kst12 ist für dich eine Variable kst mit 12 darin enthaltenen Datenfeldern.
Sub Datenfeld_kst aufmachen()
'hält 12 Felder für kst bereit, erster Index=0 (11)=Obergrenze
Dim kst(11)as string
'Werte zuweisen
kst(0)="Text1"
kst(1)="Text2"
.
.
kst(11)="Text12"
End Sub
Damit kannst Du dann deine Schleife durchlaufen, oder?
Sub Schleife()
Dim i (11) as Integer
For i = 0 to 11 'i wie Index
Print kst(i) 'oder was Du sonst damit machen willst
End Sub
Hilft es dir weiter? Wie gesagt ich kann dir bei der Umsetzung nicht helfen, ich hab nur eine wage Vorstellung, wie es in etwa aussehen könnte.
Ich scheitere immer wieder an der Syntax, der richtigen Dimensionierung der Variablen und an Prozeduren die mit bestimmten Objekten nicht erlaubt sind, aber ich stecke voller guter Ideen.
Liebe Grüße Jörg
genau das fiel mir dann im Bett auch noch ein: Dem verwendeten Datenfeld lässt sich doch zur Laufzeit eine Variable hinzufügen.
D.h. wenn ich einmal rausbekommen habe, wieviele kstx ich benötige (passiert vorher im Code), muss meine FOR EACH-Schleife ja gar nicht prinzipiell beschränkt sein.
Toll.
Gruss
TE
falls nicht bereits erledigt, vielleicht hilft folgendes zum Verständnis...
Gruß
gordon