Excel: For-Schleife und If-Else

  • VB

  • E!viS
  • 1543 Aufrufe 3 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Excel: For-Schleife und If-Else

    Hi,
    ich programmiere ein Makro, das die Zahlen zwischen zwei Zahlen mit Hilfe einer For-Schleife aufaddiert.
    z.B.:
    3 und 7 = 25

    Das Ergebnis wird über eine MsgBox ausgegeben.

    Quellcode

    1. Sub Test()
    2. Dim x As Integer
    3. Dim y As Integer
    4. Dim z As Integer
    5. Dim a As Integer
    6. x = InputBox("1. Zahl:")
    7. y = InputBox("2. Zahl:")
    8. If x < y Then
    9. a = x
    10. For z = x To y
    11. a = a + 1
    12. Next z
    13. Else
    14. a = y
    15. For z = y To x
    16. a = a + 1
    17. Next z
    18. End If
    19. MsgBox (a)
    20. End Sub
    Alles anzeigen


    Wenn ich zwei Zahlen gibt VBA mir nur die größere der beiden Zahlen +1 aus.
    Bin jetzt schon über ne halbe Stunde den Fehler am suchen.
    Ich hoffe ihr könnt mir helfen.

    MfG E!viS
  • Hy

    Dein Fehler ist, das du zum Startwert immer nur 1 dazuzählst.
    (3+1+1+1+1+1) = 8

    Du willst aber die aktuelle Zahl dazuaddieren
    (0+3+4+5+6+7) = 25

    Das sieht dann so aus:

    Quellcode

    1. Sub TestNeu()
    2. Dim x As Integer
    3. Dim y As Integer
    4. Dim z As Integer
    5. Dim a As Integer
    6. x = InputBox("1. Zahl:")
    7. y = InputBox("2. Zahl:")
    8. If x < y Then
    9. For z = x To y
    10. a = a + z
    11. Next z
    12. Else
    13. For z = y To x
    14. a = a + z
    15. Next z
    16. End If
    17. MsgBox (a)
    18. End Sub
    Alles anzeigen


    Bsp: x=3 y=7 (z=3, 4, 5, 6, 7) ==> 5 Durchläufe

    Durchlauf1: a = leer + z=3 ==> a=3
    Durchlauf2: a = 3 + z=4 ==> a=7
    Durchlauf3: a = 7 + z=5 ==> a=12
    Durchlauf4: a = 12 + z=6 ==> a=18
    Durchlauf5: a = 18 + z=7 ==> a=25

    Ergebnis: a=25

    Ich hoffe ich konnte helfen.

    MfG Tattooed1980
    Ihr lacht über mich, weil ich anders bin... Ich lache über euch, denn ihr seit alle gleich!