next ohne for

  • Excel

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    next ohne for

    Hallo Community...

    Ich habe folgenden Code und er sagt mir, Next ohne for! --> bei "next z" bleibt er stehen...

    Ich verstehe meinen synthax fehler gerade nicht... kann mir jemand sagen, was ich da falsch habe??

    mein code:

    Visual Basic-Quellcode

    1. Sub Prüfe_und_Ersetze_NV()
    2. 'Prozedur, die alle Zellen, die ein #NV als Wert beinhalten erkennt und den Wert durch "" ersetzt!
    3. Dim z As Range, Letzte As Range
    4. Dim a As Integer
    5. Dim x As Range, Letzte2 As Range
    6. Set Letzte = Cells(Rows.Count, 36).End(xlUp)
    7. For Each z In Range(Cells(1, 1), Letzte)
    8. If IsError(z) Then
    9. a = a + 1
    10. Next z
    11. If MsgBox("Es wurden " & a & " Einträge mit dem Wert #NV, gefunden! Sollen diese Werte durch leere Einträge ersetzt werden??", vbYesNo) = vbYes Then
    12. Set Letzte2 = Cells(Rows.Count, 36).End(xlUp)
    13. For Each x In Range(Cells(1, 1), Letzte2)
    14. If IsError(x) Then If x = CVErr(xlErrNA) Then x = ""
    15. Next x
    16. ElseIf vbNo Then
    17. Exit Sub
    18. End If
    19. End Sub


    Vielen Dank!

    VG Tim

    VB.NET-Quellcode

    1. For Each z In Range(Cells(1, 1), Letzte)
    2. If IsError(z) Then
    3. a = a + 1
    4. Next z


    Dort fehlt das End If.

    VB.NET-Quellcode

    1. For Each z In Range(Cells(1, 1), Letzte)
    2. If IsError(z) Then
    3. a = a + 1
    4. End If
    5. Next z

    DANKE "ThuCommix"!!

    Es funktioniert zwar interessanterweise trotzdem... aber damits sauber ist, hab ichs vorsichtshalber ausgebessert...


    @Neptun:
    Wie meinst du das? Ich dachte... das sind die 2 Werte (yes und no) die beim klicken automatisch zugewiesen werden... somit... dass ich da nix setzen kann...
    oder wie meinst du das jz genau? weil funktionieren tut's amal...

    Vielen Dank!

    LG Tim
    vbNo ist eine Konstante mit dem Wert 7
    vbYes ist eine Konstante mit dem Wert 6

    Beides löst sich in einer logischen Abfrage immer zu True auf.
    Nur die Zahl 0 ergibt False, alle anderen Zahlen ergeben True.

    Abgesehen von der Tatsache, dass Bool-Abfragen mit Integer nicht typgerecht sind, sollte man solch gefährliche Dinge auch aus Gründen des einfacheren Verständisses vermeiden.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Hallo petaod!

    achso ist das...

    das heißt dann dass wenn ich schreibe "...ElseIf vbNo = 7 Then...." dann wäre das korrekt und somit die richtige Vorgehensweise... für den Fall, dass man auf "nein" klickt?
    hab ich das nun richtig verstanden?

    ereza schrieb:

    .ElseIf vbNo = 7 Then
    Nein.

    Visual Basic-Quellcode

    1. MsgboxAnswer = MsgBox("blabla")
    2. If MsgboxAnswer = vbYes Then
    3. 'tu es
    4. Else
    5. 'tu nix
    6. End If

    oder

    Visual Basic-Quellcode

    1. If MsgBox("Es wurden " & a & " Einträge mit dem Wert #NV, gefunden! Sollen diese Werte durch leere Einträge ersetzt werden??", vbYesNo) = vbYes Then
    2. 'tu etwas
    3. Else
    4. 'tu nix
    5. End If

    Letztendlich kommt dein Konstrukt auf dasselbe raus und darum funktioniert er auch.

    Visual Basic-Quellcode

    1. If MsgBox("Es wurden " & a & " Einträge mit dem Wert #NV, gefunden! Sollen diese Werte durch leere Einträge ersetzt werden??", vbYesNo) = vbYes Then
    2. '...
    3. ElseIf vbNo Then 'löst sich auf zu "ElseIf 7 Then" = "ElseIf True Then" = "Else"
    4. Exit Sub
    5. End If
    Dein bedingtes ElseIf wird also de facto zum unbedingten Else.
    Aber das verwirrt einfach unheimlich und sollte so nicht gecodet werden.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --