Gustav Brock
gustav at cactus.dk
Tue Jun 1 02:59:14 CDT 2004
Hi Darren
Another option is to loop through the opened forms only and close
these one by one (if possible):
<code>
Public Function CloseAllForms() As Boolean
' Close all open forms.
' Returns True if success.
' Reports error message for any form that could not be closed.
'
' 1999-08-02. Cactus Data ApS, CPH.
Dim lngForms As Long
Dim lngForm As Long
Dim strForm As String
Dim strCaption As String
Dim booError As Boolean
Dim strMsgPrompt As String
Dim strMsgTitle As String
Dim lngMsgStyle As Long
On Error GoTo Err_CloseAllForms
lngForms = Forms.Count
For lngForm = lngForms - 1 To 0 Step -1
' Close forms in reverse order.
strForm = Forms(lngForm).Name
DoCmd.Close acForm, strForm
Next lngForm
CloseAllForms = Not booError
Exit_CloseAllForms:
Exit Function
Err_CloseAllForms:
strCaption = Forms(lngForm).Caption
If Len(strCaption) > 0 Then
strForm = strCaption
End If
strMsgTitle = "Error"
strMsgPrompt = "Form '" & strForm & "' could not be closed." & vbCr & vbLf
strMsgPrompt = strMsgPrompt & "Error:" & Str(Err.Number) & ". " & Err.Description
lngMsgStyle = vbOKOnly + vbExclamation 'vbCritical
DoCmd.Beep
MsgBox strMsgPrompt, lngMsgStyle, strMsgTitle
booError = True
Resume Next
End Function
</code>
/gustav
> I want to loop through the Forms collection and close any form/forms that is/are open.
> Any suggestions?