title: Excel Useform: How to hide application but have icon in the taskbar
body: <p>What I want to have is Application.Visible = False, so that my users cannot see the excel/worksheets, only the userform. </p>
  
  <p>I have got this to work by using this code:</p>
  
  <pre><code>Private Sub Workbook_Open()
  Application.Visible = False
  UserForm2.Show
  End Sub
  </code></pre>
  
  <p>However, this only has the userform floating around in the background. My users will have other applications open, and I want them to easily change to the userform by having an icon visible on the taskbar. </p>
  
  <p>I have found the following example online, but I cannot seem to find where to place this code. Still very new to this, so hopefully I have the right code for the job. If I do, can someone talk me through where to place it, as it is not working when I paste it into my code?</p>
  
  <p>(i.e. should it go under 'userform' or 'this workbook: declarations' etc. ) </p>
  
  <p>Thank you, </p>
  
  <pre><code>Option Explicit
  Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
  Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
  Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  Private Declare Function SetFocus Lib "user32" (ByVal hWnd As Long) As Long
  Private Const GWL_STYLE As Long = -16
  Private Const GWL_EXSTYLE As Long = -20
  Private Const WS_CAPTION As Long = &amp;HC00000
  Private Const WS_MINIMIZEBOX As Long = &amp;H20000
  Private Const WS_MAXIMIZEBOX As Long = &amp;H10000
  Private Const WS_POPUP As Long = &amp;H80000000
  Private Const WS_VISIBLE As Long = &amp;H10000000
  Private Const WS_EX_DLGMODALFRAME As Long = &amp;H1
  Private Const WS_EX_APPWINDOW As Long = &amp;H40000
  Private Const SW_SHOW As Long = 5
  
  Private Sub UserForm_Activate()
  Application.Visible = False
  Application.VBE.MainWindow.Visible = False
      Dim lngHwnd As Long
      Dim lngCurrentStyle As Long, lngNewStyle As Long
      If Val(Application.Version) &lt; 9 Then
          lngHwnd = FindWindow("ThunderXFrame", Me.Caption)  'XL97
      Else
          lngHwnd = FindWindow("ThunderDFrame", Me.Caption)  'XL2000, XP, 2003?
      End If
      'Set the Windows style so that the userform has a minimise and maximise button
      lngCurrentStyle = GetWindowLong(lngHwnd, GWL_STYLE)
      lngNewStyle = lngCurrentStyle Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX
      lngNewStyle = lngNewStyle And Not WS_VISIBLE And Not WS_POPUP
      SetWindowLong lngHwnd, GWL_STYLE, lngNewStyle
  
      'Set the extended style to provide a taskbar icon
      lngCurrentStyle = GetWindowLong(lngHwnd, GWL_EXSTYLE)
      lngNewStyle = lngCurrentStyle Or WS_EX_APPWINDOW
      SetWindowLong lngHwnd, GWL_EXSTYLE, lngNewStyle
      ShowWindow lngHwnd, SW_SHOW
  End Sub
  Private Sub UserForm_Terminate()
  Application.Visible = True
  End Sub
  </code></pre>