Clever-Excel-Forum

Normale Version: Formel für umgekehrte Richtung anpassen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

schaut euch bitte folgende(n) Formel/Code an:

Sub Im_Kreis_laufen()
Dim i, Next, str
str = "5#155#15#18#20#229"
str = Split(str, "#")

vbNext = 18

For i = 0 To 100
vbNext = str(((Application.Match(CStr(vbNext), str, 0)) Mod (UBound(str))))
Debug.Print vbNext
Next

End Sub

Von einem beliebigen Startwert vbNext ausgehend aus, der ein Zahlenelement aus str ist, wird
mit debug.print vbNext immer der jeweils nächste Zahlenwert aus dem String str ausgegeben.
Ist das Ende   hier mit 229 erreicht, fängt die ganze Sache wieder von vorn an, also hier mit 5.

Ich hätte das Ganze jetzt gerne so modifiziert das nicht der Nächste Zahlenwert ausgegeben
wird, sondern der vorherige. Die Richtung der Ausgabe der Zahlenwerte soll sich also umkehren.
Ist dann irgendwann mal die 5 erreicht kommt als nächster Zahlenwert die 229 usw.
Hallo (Nicht-)Anfänger,

um mehrfach alle Werte des Arrays anzuzeigen ist der Ansatz "überqualifiziert". Es geht auch viiiiiiieeeeel einfacher.

Was ist der Hintergrund für diesen Ansatz?

mfg
Hallo Fennek,

Hintergrund ist ein eigenes kleines VBA Programm. Die Aufgabenstellung habe ich hier etwas "repräsentationsfertig" gemacht.
Die Zahlen sollen gewisse Reihen auf meinem Sheet darstellen, die ich nacheinander ansteuern möchte. Die Formel
habe ich mir dazu mal vor einigen Wochen selbst ausgedacht. Kann man immer wieder mal gebrauchen. Ich will
einfach den String mittels dieser Formel "rückwärts" durchlaufen. Komme aber nicht so recht drauf, wie ich
dieses kleine "Monster" modifizieren könnte, damit sie umgekehrt im Kreis läuft.
Hallo,

die Motivation für den Ansatz habe ich nicht verstanden.

Hier ein Code für den "umgekehrten" Ansatz:


Code:
Sub F_en()

dim str as string
str = "5#155#15#18#20#229"
AR = Split(str, "#")

For i = 0 To 100
    for j = ubound(Ar) to 0 step -1
        r=r+1
        cells(r,1) = Ar(j)
    next j
Next

End Sub

Es ist einfach, die Schleife so umzuschreiben, dass die Werte in der Reihenfolge des Arrays ausgegeben werden.

mfg
Hallo,

anbei eine Möglichkeit den String/das Feld ständig wiederholend vorwärts/rückwärts zu durchlaufen.


Code:
Sub Ständig_Vorwärts_Und_Rückwärts_Durchlaufen()
Dim i%, vbR%, vbNext%, str: str = "5#155#15#18#20#229"
'vbR gibt Richtung an in der durchlaufen wird +1 nach rechts,  -1 nach links
vbR = -1
'Beliebigen Anfangswert aus den gegebenen String str setzen
vbNext = 18
str = Split(str, "#")
For i = 0 To 100
vbNext = str(((Application.Match(CStr(vbNext), str, 0) + UBound(str) + vbR) Mod (UBound(str) + 1)))
Next
End Sub

Andere Vorschläge? Verbesserungen? Posten!! - Danke.