Gustav Brock
gustav at cactus.dk
Sat Aug 20 16:53:28 CDT 2005
Hi Barbara
First, there's no need to retrieve the Form collection count that many
times.
Second, your main form is probably the first form to open, so why not
just leave it?
Thus:
Function CloseAllForms()
Dim lngForms As Long
Dim lngForm As Long
lngForms = Forms.Count
' Loop through the collection of forms and close
' them except for the first opened (main form).
For lngForm = lngForms - 1 To 1 Step -1
DoCmd.Close acForm, Forms(lngForm).Name
Next
End Function
You cannot do this forward because if you close form N all form indexes
above N will be shifted one down to fill the hole in numbers. This
could, however, be taken advantage of:
Function CloseAllForms()
' Close all forms except the first opened.
While Forms.Count > 1
DoCmd.Close acForm, Forms(1).Name
Wend
End Function
As you can see, your function seems to be a mix of these two approaches.
/gustav
>>> BarbaraRyan at cox.net 19-08-05 20:51 >>>
I have used the following code successfully in Access 97 to close all
forms when a specific function key is pressed. However, in Access 2002,
this code causes the error box to appear (with the 2 options to send an
error report to Microsoft or not) and then closes Access. Does anyone
know why?
Function CloseAllForms()
Dim i As Integer
' Loop through the collection of open forms and close them
(except for the main menu)
If Forms.Count > 0 Then
For i = Forms.Count - 1 To 0 Step -1
If Forms(i).Name <> "frmMainMenu" Then
DoCmd.Close acForm, Forms(i).Name
End If
Next i
End If
End Function
Thanks,
Barb Ryan