Reputation: 843
I am writing a script in Excel VBA where the Workbook
is supposed to open with a UserForm
. I want only the UserForm
to be visible and the excel window itself to be invisible. As such, I have written the following code for the opening of the Workbook
:
Private Sub Workbook_Open()
'Application launch
Application.Visible = False 'Hide Excel window
EnableResize = False
Application.DisplayFullScreen = True 'Preset fullscreeen mode
Application.CommandBars("Full Screen").Enabled = False 'Hide command bars
WelcomeForm.Show 'Show welcome UserForm
End Sub
I realize that I have set the whole Excel application to be invisible. In this sense, what happens now is that when I have other Excel workbooks open, they turn invisible as soon as I open this one. How could I make it so that this setting only applies to this specific workbook? Thank you
Upvotes: 0
Views: 16125
Reputation: 46
what you can do is the following
private sub workbook_open ()
userform.activate
end sub
then in the userform code write
Private sub userform_intialize()
application.screenupdate =false
end sub
now you only see the form upon starting
One problem that I do not know how to fix is that you will still see old versions whe you move the window.
Upvotes: 0
Reputation: 8375
There is a choice to be made here:
Sub HideSheet()
Dim sheet As Worksheet
Set sheet = ActiveSheet
' Hides the sheet but users will be able to unhide it using the Excel UI
sheet.Visible = xlSheetHidden
' Hides the sheet so that it can only be made visible using VBA
sheet.Visible = xlSheetVeryHidden
End Sub
More detail in this SO question
Upvotes: 1
Reputation: 3777
Partial answer: You can set the window property .Visible
as well
ThisWorkbook.Windows(1).Visible = False
however this won't hide the application (there will be an empty Excel window if you only have one workbook open) so you need to check for that first
If Application.Workbooks.Count > 1 Then
ThisWorkbook.Windows(1).Visible = False
Else
Application.Visible = False
End If
Upvotes: 3