I'm sure this is a rookie question but I rarely use the Do...While and Do...Until loops.

I have been abusing GoTo in the past and am trying to mend my ways.

I have a form that is shown from a calling sub. I want a loop in the calling sub to check for a boolean condition (set by a form property) and to exit the loop the instant that the condition is met. Instead the loop repeats at least once before picking up the condition change. Is there any way around this or do I need to go back to using GoTo?


(Reading the above makes me realise I'm not making myself very clear, I will post some dummy code below to express my idea more clearly)

Public Sub Load_frm_Edit_Employee()
    Dim frmCC1_Employee_Edit    As frm_Edit_Employee
    Dim blnCloseForm            As Boolean

    On Error GoTo 0

    'start up the form
    Set frmCC1_Employee_Edit = frm_Edit_Employee
    With frmCC1_Employee_Edit

        Do While blnCloseForm = False

            'show the form
            .Show vbModal

            'this value is set after the form is hidden (triggered by user pressing Save or Cancel)
            blnCloseForm = .IsFormClose '.IsFormClose is a Form property (set by the Cancel button on the Form)
            
            'ideally this should cause the loop to exit immediately after the above line


            'THIS WAS THE OLD METHOD
'            If .IsFormClose = True Then
'                GoTo ExitProcedure
'            End If


            'get new values back from the form
            '...
            '(do something with the returned values)
            '...
            
            
            'in other words, if CloseForm = False then
            '   the Save button was pressed, save the form values and then show the form again
            'else if CloseForm = True then
            '   the user pressed the Cancel button, go to exit procedure
        Loop
    End With


ExitProcedure:
    On Error Resume Next
    Unload frmCC1_Employee_Edit
    Set frmCC1_Employee_Edit = Nothing
    On Error GoTo 0
    
    'run remaining exit code here
End Sub