Macro loopt verder na End Sub

Status
Niet open voor verdere reacties.

Hamadryas

Gebruiker
Lid geworden
21 jun 2019
Berichten
24
Beste forumleden.

Ik heb voor een rekentool een deel code gescherven in een Worsheet_Change sub.
Als ik een waarde verander loopt de macro mooi, tot hij aan "end sub" komt.
Hierna zou hij gewoon moeten stoppen, maar in plaats daarvan springt hij weer naar een End if (zie bijlage) en begin opnieuw aan de for loop.
Merkwaardig is dat dit een aantal keer gebeurd waarbij hij steeds op een hogere i opnieuw begint (eerst 110, dan 101, dan 95,...) en meestal loopt excel hierop vast, waardoor ik enkel kan afsluiten en opnieuw moet openen.

Wat doe ik fout in mijn code?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With Sheets("Rekentool")
For i = 18 To 129
If Range("C" & i) <> "" Then
    If Range("C" & i) <> Range("J15") And Range("F" & i) = "" Then
        Range("F" & i) = Range("J14")
    End If
    
    If Range("C" & i) = Range("J15") And Range("F" & i) <> "" Then
        Range("F" & i) = ""
    End If
Else
    If Range("C" & i) = "" And Range("F" & i) <> "" Then
        Range("F" & i) = ""
    End If
End If
Next i
End With

End Sub

Knipsel.PNG
 
Doe het eens zo:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    [COLOR="#FF0000"]Application.EnableEvents = False[/COLOR]
    With Sheets("Rekentool")
        For i = 18 To 129
            If Range("C" & i) <> "" Then
                If Range("C" & i) <> Range("J15") And Range("F" & i) = "" Then
                    Range("F" & i) = Range("J14")
                End If
                
                If Range("C" & i) = Range("J15") And Range("F" & i) <> "" Then
                    Range("F" & i) = ""
                End If
            Else
                If Range("C" & i) = "" And Range("F" & i) <> "" Then
                    Range("F" & i) = ""
                End If
            End If
        Next i
    End With
    [COLOR="#FF0000"]Application.EnableEvents = True[/COLOR]
End Sub

Het Change event wordt bij iedere wijziging in het werkblad uitgevoert.
Door de rode regels voorkom je dat als de sub al actief is.

Je gebruikt With Sheets("Rekentool"), maar wat je verder doet wordt uitgevoerd op het actieve werkblad.
Als dat het blad Rekentool is dan is die hele With opdracht overbodig.
 
Laatst bewerkt:
Dag Edmoor

Rekentool was inderdaad het actieve werkblad.
Ik had de With er voorlopig in gezet om met de onderbrekingen te kunnen kijken wat er fout ging.

Amai dat de oplossing zo simpel kan zijn :D

Bedankt, dat werkt inderdaad!
 
Laatst bewerkt:
Ik heb er nog wat extra uitleg bij gezet :)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan