Code Samples for Businesses, Schools & Developers

Last Updated 18 Apr 2017

I use the following function to close all VBE windows
Its very useful when so many windows are left open you can't find anything.
It also significantly speeds up loading the VBE editor if it doesn't need to load lots of unwanted 'legacy' windows

CODE:

Function CloseAllVBEWindows()
'closes all VBE windows except this one!
'requires VBA reference library 'Microsoft Visual Basic for Applications Extensibility'

On Error GoTo Err_Handler

Dim vbWin As VBIDE.Window
For Each vbWin In Application.VBE.Windows
    If (vbWin.Type = vbext_wt_CodeWindow Or _
        vbWin.Type = vbext_wt_Designer) And _
        Not vbWin Is Application.VBE.ActiveWindow
                vbWin.Close
    End If
Next

Exit_Handler:
   Exit Function

Err_Handler:
   If Err.Number = 424 Then Resume Next     'object required
   MsgBox "Error " & Err.Number & " in CloseAllVBEWindows procedure: " & Err.Description
   Resume Exit_Handler

End Function


To use the above code, just copy it to a standard module & run it

NOTE:
1. As stated in the code, add a reference to the library 'Microsoft Visual Basic for Applications Extensibility'

2. After running the function, all windows will be closed except the one containing the function itself.
   Alternatively, to close all ALL windows, create an Autokeys macro shortcut for this function e.g. Ctl+Shift+X

3. A small modification can be made to the above code so the additional reference isn't required.
   This change was suggested by Access World Forums member CJ_London

CODE:

Function CloseAllVBEWindows()

'closes all VBE windows except this one!

On Error GoTo Err_Handler

'modified section
Dim vbWin As Object
Const vbext_wt_CodeWindow = 0
Const vbext_wt_Designer = 1

For Each vbWin In Application.VBE.Windows
    If (vbWin.Type = vbext_wt_CodeWindow Or _
        vbWin.Type = vbext_wt_Designer) And _
        Not vbWin Is Application.VBE.ActiveWindow Then
                vbWin.Close
    End If
Next

Exit_Handler:
   Exit Function

Err_Handler:
   If Err.Number = 424 Then Resume Next     'object required
   MsgBox "Error " & Err.Number & " in CloseAllVBEWindows procedure: " & Err.Description
   Resume Exit_Handler

End Function





Feedback

Please use the E-Mail button in the contact form below to let me know whether you found this article useful or if you have any questions.

Please also consider making a donation towards the costs of maintaining this website. Thank you



Colin Riddington                       Mendip Data Systems                       Last Updated 18 Apr 2017



Return to Code Samples Page




Return to Top