Desidero nascondere il pulsante Excel nella barra delle applicazioni e visualizzare un pulsante separato per il mio userform in modo che si senta come un'applicazione a sé stante. So che questo è stato trattato molto ma ho problemi con un problema specifico: il mio codice funziona bene quando lo passo, ma non se lo lascio funzionare normalmente. Ecco il codice, che ho messo nel modulo di classe di UserForm1:Visualizzazione di un userform di Excel come pulsante nella barra delle applicazioni
Option Explicit
Private Declare Function GetWindowLong _
Lib "user32" _
Alias "GetWindowLongA" (_
ByVal hWnd As Long, _
ByVal nIndex As Long) _
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 DrawMenuBar _
Lib "user32" (_
ByVal hWnd As Long) _
As Long
Private Declare Function FindWindowA _
Lib "user32" (_
ByVal lpClassName As String, _
ByVal lpWindowName As String) _
As Long
Private Const GWL_EXSTYLE = (-20)
Private Const GWL_STYLE As Long = (-16)
Private Const WS_EX_APPWINDOW = &H40000
Private Const WS_SYSMENU As Long = &H80000
Private Const WS_MINIMIZEBOX As Long = &H20000
Private Const WS_MAXIMIZEBOX As Long = &H10000
Private Sub UserForm_Activate()
Dim lFrmWndHdl As Long
Dim lStyle As Long
lFrmWndHdl = FindWindowA(vbNullString, Me.Caption)
lStyle = GetWindowLong(lFrmWndHdl, GWL_STYLE)
lStyle = lStyle Or WS_SYSMENU
lStyle = lStyle Or WS_MINIMIZEBOX
lStyle = lStyle Or WS_MAXIMIZEBOX
SetWindowLong lFrmWndHdl, GWL_STYLE, (lStyle)
lStyle = GetWindowLong(lFrmWndHdl, GWL_EXSTYLE)
lStyle = lStyle Or WS_EX_APPWINDOW
SetWindowLong lFrmWndHdl, GWL_EXSTYLE, lStyle
DrawMenuBar lFrmWndHdl
AppActivate ("Microsoft Excel")
ThisWorkbook.Application.Visible = False
End Sub
Facendo un passo attraverso il codice, quando faccio un passo nella seconda all'ultima riga AppActivate un pulsante separato compare nella barra delle applicazioni, e l'ultima riga nasconde il pulsante originale per la cartella di lavoro di Excel nella barra delle applicazioni. Mi rimane quindi solo un userform che può essere massimizzato o minimizzato sulla barra delle applicazioni come qualsiasi normale applicazione. Il problema è che se caricherò il form utente tramite codice, il pulsante separato per il form utente non verrà visualizzato nella barra delle applicazioni, quindi non ci sono pulsanti di Excel lasciati visualizzati nella barra delle applicazioni.
Che cosa succede se si aggiunge '' DoEvents' dopo DrawMenuBar lFrmWndHdl' –
E anche dopo il 'AppActivate ("Microsoft Excel")' –
Ci ho provato. Non aiuta Ho provato anche application.wait. –