Schleifenproblem

  • Excel

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von petaod.

    Schleifenproblem

    Hallo Zusammen,

    ich habe ein kleines Schleifenproblem und komme leider nicht weiter. Ich programmiere auch erst seit kurzer Zeit für VBA und kenne mich daher noch nicht so gut aus. Das ist mein Code:

    Quellcode

    1. Sub test1()
    2. Dim i As Integer
    3. Dim j As Integer
    4. Dim k As Integer
    5. For i = 1 To 5 Step 4
    6. For j = 2 To 6 Step 4
    7. For k = 3 To 7 Step 4
    8. Con1 = Cells(6, j) / Cells(6, k)
    9. Con2 = Cells(7, j) / Cells(7, k)
    10. Con3 = "MA Cross"
    11. Con4 = "Trigger active"
    12. Con5 = "Buy Long"
    13. Con6 = "Stay Long"
    14. Con7 = "Exit Long"
    15. Con8 = ""
    16. If Cells(3, i) = Con7 And Con1 < 1 Then
    17. Cells(3, i) = Con8
    18. ElseIf (Cells(1, i) = Con5 And Con1 < 1) Or (Cells(1, i) = Con6 And Con1 < 1) Then
    19. Cells(3, i) = Con7
    20. ElseIf Cells(1, i) = Con6 And Con1 > 1 Then
    21. Cells(1, i) = Con6
    22. ElseIf Cells(1, i) = Con5 And Con1 > 1 Then
    23. Cells(1, i) = Con6
    24. ElseIf (Cells(2, i) = Con3 And Con1 >= 1.03) Or (Cells(2, i) = Con4 And Con1 >= 1.03) Then
    25. Cells(1, i) = Con5
    26. ElseIf (Cells(2, i) = Con3 And Con1 < 1) Or (Cells(2, i) = Con4 And Con1 < 1) Then
    27. Cells(2, i) = Con8
    28. ElseIf Cells(2, i) = Con4 And Con1 < 1.03 And Con1 > 1 Then
    29. Cells(2, i) = Con4
    30. ElseIf Cells(2, i) = Con3 And Con1 < 1.03 And Con1 > 1 Then
    31. Cells(2, i) = Con4
    32. ElseIf Con1 < 1.03 And Con1 > 1 And Con2 < 1 Then
    33. Cells(2, i) = Con3
    34. ElseIf Con1 >= 1.03 And Con2 < 1 Then
    35. Cells(1, 1) = Con5
    36. End If
    37. If Cells(1, i) = Con5 Then
    38. Cells(2, i) = Con8
    39. End If
    40. If Cells(3, i) = Con7 Then
    41. Cells(1, i) = Con8
    42. End If
    43. If Cells(2, i) = Con3 Then
    44. Cells(3, i) = Con8
    45. End If
    46. Next k
    47. Next j
    48. Next i
    49. End Sub


    Im großen und ganzen sollen die Inhalte der Felder A1 bis A3 verändert werden, und zwar in Abhängigkeit von Werten in B6 bis C7 in Verbindung mit Werten aus A1 bis C1 (wenn dort Werte drin stehen). Das Wäre dann der erste Durchgang.
    Im zweiten Durchgang sollen die Inhalte der Felder E1 bis E3 ausgefüllt werden, und zwar in Abhängigkeit von Werten in F6 bis G7 in Verbindung mit Werten aus E1 bis E3 (wenn dort Werte drin stehen). Irgendwie bekomm ich VBA nicht dazu, dass der Code erst für den ersten Zellenblock abgearbeitet wird, also A1 bis A3 und B6 bis C7 und dann nochmal komplett für den Zellenblock von E1 bis E3 und F6 bis G7. So wie es jetzt ist, wird es vermischt. Ich vermute, dass es an den Schleifen liegt, komme aber gerade nicht drauf, was ich falsch mache. Hat jemand eine Idee?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „mack“ ()

    mack schrieb:

    erst für den ersten Zellenblock abgearbeitet wird, also A1 bis A3 und B6 bis C7 und dann nochmal komplett für den Zellenblock von E1 bis E3 und F6 bis G7

    Visual Basic-Quellcode

    1. For Each c1 In Range("A1:A3")
    2. For Each c2 in Range("B6:C7")
    3. 'was auch immer du machen willst
    4. Next
    5. Next
    6. For Each c1 In Range("E1:E3")
    7. For Each c2 in Range("F6:G7")
    8. 'was auch immer du machen willst
    9. Next
    10. Next
    Was du genau machen willst, habe ich mir nicht die Mühe gemacht, zu verstehen.
    Allerdings vermute ich, dass du gar keine inneren Schleifen benötigst, sondern die Berechnungen von einer 1:1-Zuordnung der Zellen abhängig sind.
    Aber dazu ist deine Erklärung etwas zu dürftig.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --