Is there some way to simplify this loop I have a cycle which goes from -55 to -1, then from 1 to 55 before going back to -55 again. I want to make a loop going from an arbitrary point in this loop to another arbitrary point, but never as far as a full cycle.
Since the end value of the counter might be either a larger or smaller than the start value, I initially made the exit condition for the loop that fra equals til.
However, I also want to do something when fra = til, so in the end my loop ended up looking like what you can see below, with a helper-variable triggering the exit.
I am not all that happy with how this ended up looking though, feeling the logic is a bit clunky. Is there some way to improve the code below?
Option Explicit

Dim første_økt_anodeskift(1 To 10, 1 To 2) As Long

Const farge_anodeskift_1 As Long = 14395790 ' RGB(142, 169, 219)

Sub main()
    Dim syklus As Long
    
    syklus = 1
    
    Call legg_inn_verdier
    Call fargelegg(første_økt_anodeskift(syklus, 1), første_økt_anodeskift(syklus, 2), farge_anodeskift_1)
End Sub

Private Sub fargelegg(fra, til, farge)
    Dim exit_on_next As Boolean
    
    exit_on_next = False
    
    Do
        ' Do stuff
        
        If exit_on_next Then Exit Do
        
        fra = fra + 1
        
        If fra = 0 Then
            fra = 1
        ElseIf fra = 56 Then
            fra = -55
        End If
        
        If fra = til Then exit_on_next = True
    Loop While True
End Sub

Private Sub legg_inn_verdier()
    første_økt_anodeskift(1, 1) = -11: første_økt_anodeskift(1, 2) = 6
End Sub
```
Maybe this looks better to you.  Encapsulating a loop's contained logic in dedicated single-purpose procedures generally makes a loop easier to read and understand(IMO).  In this case, the loop conditions requiring the repeated code to run 'one last time' becomes a little more clear as well.
    Option Explicit

    Dim første_økt_anodeskift(1 To 10, 1 To 2) As Long

    Const farge_anodeskift_1 As Long = 14395790 ' RGB(142, 169, 219)

    Sub main()
        Dim syklus As Long
        
        syklus = 1
        
        Call legg_inn_verdier
        Call fargelegg(første_økt_anodeskift(syklus, 1), første_økt_anodeskift(syklus, 2), farge_anodeskift_1)
    End Sub

    Private Sub fargelegg(fra, til, farge)
        Do
            DoStuff fra, til, farge
            
            fra = GetNextFra(fra)
            
            If fra = til Then
                DoStuff fra, til, farge
                Exit Do
            End If
            
        Loop While True
    End Sub

    Private Sub legg_inn_verdier()
        første_økt_anodeskift(1, 1) = -11: første_økt_anodeskift(1, 2) = 6
    End Sub

    Private Sub DoStuff(fra, til, farge)
        ' Do stuff
    End Sub

    Private Function GetNextFra(fra) As Variant
        fra = fra + 1
        
        If fra = 0 Then
            fra = 1
        ElseIf fra = 56 Then
            fra = -55
        End If
        
        GetNextFra = fra
    End Function