Codestrang per Schleife mit Variable +1

  • VBScript

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von MHAS.

    Codestrang per Schleife mit Variable +1

    Hallo,

    ich versuche mich seit ein paar Tagen in Schleifen einzuarbeiten, aber irgendwie klappt das vorne und hinten nicht....

    Ich hoffe, dass ich mich gleich verständlich genug ausdrücke:
    Mein bisheriger Code besteht daraus, dass in einem anderen Tool verschiedene Sendkeys-Befehle ausgeführt werden.
    Von dieser VBS soll ein bestimmter Teil als Schleife genutzt werden. Innerhalb dieser Schleife muss ein Wert mit 1 Addiert (Letzte Stelle der Variablen Slot) und ausgegeben werden.

    Hier ein Teil von meinem Code der als Schleife genutzt werden soll:

    VB.NET-Quellcode

    1. set E = CreateObject("WScript.Shell")
    2. ENTER = "{ENTER}"
    3. set PfeilU = CreateObject("WScript.Shell")
    4. PfeilU.SendKeys ("{DOWN}")
    5. Set S = CreateObject("WScript.Shell")
    6. Slot = "0/21/0/0" 'Bei Diesem Wert soll in der Schleife die Letzte Stelle immer um +1 Addiert werden
    7. Set T = CreateObject("WScript.Shell")
    8. TAB = "{TAB}"
    9. n = 0
    10. Do
    11. n = n + 1
    12. T.SendKeys Tab
    13. WScript.Sleep 200
    14. Loop Until n = 13
    15. WScript.Sleep 500
    16. min=5 'Mindestwert
    17. step=1 'increment-Wert
    18. y=Split(Slot,"/") 'Splittet die Eingabe bei Slash
    19. value=y(uBound(y)-1) 'Vorletzter Wert in diesem Array
    20. count = min
    21. for i=1 to value
    22. count = count + step
    23. next
    24. PfU.SendKeys "{DOWN " & count & "}"
    25. WScript.Sleep 500
    26. E.SendKeys ENTER




    Meine Überlegung ist es nun über die schon genutzte Loop Funktion den Code wiederzugeben:


    VB.NET-Quellcode

    1. a = 0
    2. Do
    3. a =a + 1
    4. 'Hier Fehlt mir der Befehl um den Vorherigen Code gekürzt wieder zugeben (sozusagen Code von da bis da = C)
    5. WScript.Sleep 200
    6. Loop Until a = 13



    Ich hoffe der Teil war nachvollziehbar.


    Meine Überlegung um die +1 Bei der Slot Angabe zu erreichen wäre:


    VB.NET-Quellcode

    1. min=1 'Mindestwert
    2. step=1 'increment-Wert
    3. x=Split(Slot,"/") 'Splittet die Eingabe bei Slash
    4. value=x(uBound(x)0) 'Letzter Wert in diesem Array
    5. count = min
    6. for i=1 to value
    7. count = count + step
    8. next
    9. S.SendKeys "{Slot " & count & "}"



    Hierbei scheine ich aber einen Fehler zu machen, es kommt zu keiner Ausgabe….



    kann mir bitte jemand auf die Sprünge helfen?
    Gibt es einen Grund, warum Du statt

    Visual Basic-Quellcode

    1. n = 0
    2. Do
    3. n = n + 1
    4. T.SendKeys Tab
    5. WScript.Sleep 200
    6. Loop Until n = 13

    nicht einfach

    Visual Basic-Quellcode

    1. For n = 0 To 12
    2. T.SendKeys Tab
    3. WScript.Sleep 200
    4. Next

    verwendest?

    Den Teil kapier ich auch nicht:

    Visual Basic-Quellcode

    1. min=5 'Mindestwert
    2. step=1 'increment-Wert
    3. y=Split(Slot,"/") 'Splittet die Eingabe bei Slash
    4. value=y(uBound(y)-1) 'Vorletzter Wert in diesem Array
    5. count = min
    6. for i=1 to value
    7. count = count + step
    8. next

    Mach doch gleich:

    Visual Basic-Quellcode

    1. count = min + value * step

    btw: ist step je was anderes als 1? Falls nicht, kannst Du auch das step aus der Codezeile weglassen.

    Visual Basic-Quellcode

    1. S.SendKeys "{Slot " & count & "}"

    Das ist kein gültiger SendKeys-Befehl, da "{Slot}" nicht korrekt ist - AFAIK. In geschweifte Klammern kommen sowas wie ENTER oder TAB. Aber Slot ist in geschweiften Klammern nicht gültig.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

    VaporiZed schrieb:

    nicht einfach
    Visual Basic-Quellcode

    For n = 0 To 12
    T.SendKeys Tab
    WScript.Sleep 200
    Next


    verwendest?


    Stimmt du hast vollkommen Recht! - das macht es nochmal eine Ecke schlanker.


    VaporiZed schrieb:

    Mach doch gleich:
    Visual Basic-Quellcode

    count = min + value * step


    btw: ist step je was anderes als 1? Falls nicht, kannst Du auch das step aus der Codezeile weglassen.


    Das kann ich ebenso zusammen fassen, stimmt! Step bleibt immer 1, das kann ich auch weg lassen.

    Schonmal vielen Dank für die Tipps. Ich überlege mir für das eigentliche Problem einen anderen Vorschlag, vllt komme ich der Sache nochmal etwas näher und Poste dann nochmal etwas.


    Gruß,
    MHAS