Gustav Brock
gustav at cactus.dk
Sun Mar 28 03:37:16 CST 2004
Hi Martin
> At times I have 3 or 4 forms open at once and may want to return to the main menu form from any of those and at the same time closing all forms except the main menu form. Can anyone tell me why the
> following function after closing only one form via the Case else will not continue to work through the forms group and close multiple forms?
> Public Function CloseForms(FromForm As String)
> Dim frm As Form
> For Each frm In Forms
> Select Case frm.Name
> Case Is = "frmMainMenu"
> 'Dont close it
> Case Is = FromForm
> 'Dont close the form that called this yet
> Case Else
> 'Close any other form
> MsgBox ("The form being closed is " & frm.Name)
> DoCmd.close acForm, frm.Name, acSaveNo
> End Select
> Next frm
> End Function
You are probably destroying the collection Forms moving forwards.
Most solutions to this task browse backwards through the collection
like this:
<code>
Public Function CloseForms(FromForm As String)
Dim strForm As String
Dim lngForm As Long
For lngForm = Forms.Count - 1 To 0 Step -1
strForm = Forms(lngForm).Name
Select Case strForm
Case Is = "frmMainMenu"
'Dont close it
Case Is = FromForm
'Dont close the form that called this yet
Case Else
'Close any other form
MsgBox ("The form being closed is " & strForm)
DoCmd.close acForm, strForm, acSaveNo
End Select
Next
End Function
</code>
/gustav