maurogsc.eu
mauro gamberini


home ==> Excel: come fare per ==> UserForm: aggiungere il tasto Riduci ad icona(32/64 bit)

UserForm: aggiungere tasto Riduci ad icona(32/64 bit) - VBA

NOTA. La soluzione ed il codice sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dal codice o dalla soluzione proposta se usati impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare il codice o la soluzione in files importanti.

1 - Come aggiungere il tasto: Riduci ad icona sulla barra di una UserForm. Codice valido per sistemi operativi a 32 e 64 bit. Nel modulo di codice della UserForm:

#If Win64 Then
    Private Declare PtrSafe Function FindWindow& Lib "user32" _
        Alias "FindWindowA" (ByVal lpClassName$, _
        ByVal lpWindowName$)
    
    Private Declare PtrSafe Function SetWindowLong& Lib "user32" Alias _
        "SetWindowLongA" (ByVal hWnd&, ByVal nIndex&, _
        ByVal dwNewLong&)
    
    Private Declare PtrSafe Function EnableWindow& Lib "user32" _
        (ByVal hWnd&, ByVal fEnable&)
    
    Private Declare PtrSafe Function ShowWindow& Lib "user32" _
        (ByVal hWnd&, ByVal nCmdShow&)
#Else
    Private Declare Function FindWindow& Lib "user32" _
        Alias "FindWindowA" (ByVal lpClassName$, _
        ByVal lpWindowName$)
    
    Private Declare Function SetWindowLong& Lib "user32" Alias _
        "SetWindowLongA" (ByVal hWnd&, ByVal nIndex&, _
        ByVal dwNewLong&)
    
    Private Declare Function EnableWindow& Lib "user32" _
        (ByVal hWnd&, ByVal fEnable&)
    
    Private Declare Function ShowWindow& Lib "user32" _
        (ByVal hWnd&, ByVal nCmdShow&)

#End If


Private Sub UserForm_Initialize()

    Dim lng As Long

    lng = &H84C80080 Or _
        &H20000 Or &H40000
    SetWindowLong FindWindow( _
        vbNullString, Me.Caption), -16, lng
    EnableWindow FindWindow( _
        vbNullString, Application.Caption), 1

End Sub


Private Sub UserForm_Activate()

    Dim lng As Long

    lng = FindWindow(vbNullString, Me.Caption)
    ShowWindow lng, 0
    SetWindowLong lng, -20, &H40101
    ShowWindow lng, 1
    
End Sub

 

2 - Richiamare poi la UserForm in modalità vbModeless. Ad esempio in un modulo standard:

Public Sub m()
    UserForm1.Show vbModeless
End Sub

Per ulteriori informazioni su Microsoft Excel ed il suo Visual Basic, utilizzate questo forum:
http://social.answers.microsoft.com/Forums/it-IT/officeexcelit/threads


Ultimo aggiornamento di questa pagina: 07/12/2010 - mauro gamberini