Aprire una userform e nascondere il foglio di lavoro

Anonimo
2016-03-13T11:47:49+00:00

Salve a tutti,

avrei un piccolo problema con la funzione: application.display=False.

cio' che avrei voluto fare era che aprendo il file excel, avrei visualizzato la userform e nascosto il foglio di lavoro.

quindi nel workbook open ho inserito:

userform1.show

application.display=False

facendo cosi' non riduco ad icona il foglio ma non lo vedo proprio sulla barra di windows.

Adesso il problema e' che se ho gia' altri file aperti ad icona e lancio il mio programma anche gli altri file spariscono dalla barra di windows pur restando sempre aperti.

Posso fare in modo di far sparire solo il file del programma aperto e lasciare gli altri precedentemente aperti ad icona ?

Spero di essere stato chiaro.

Anticipatamente ringrazio

Saluti

Giuseppe

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2016-03-14T10:20:28+00:00

Ciao Giuseppe,

C'è una possibilità di nascondere solo il foglio di lavoro della userform e lasciare tutti gli altri visibili sempre?

Tutto potrebbe essere possibile; credo che il problema sia di capire il modo di operazione voluto da te. Comunque. prendendo come spunta definitiva il commento citato, prova quanto segue.

Nel modulo di codice ThisWorkbook incolla il seguente codice:

'=========>>

Option Explicit

'--------->>

Private Sub Workbook_Open()

    Const sFoglio As String = "Foglio1"                             '<<=== Modifica

    Me.Sheets(sFoglio).Visible = xlSheetHidden

    UserForm1.Show vbModeless

End Sub

'<<=========

Nel modulo di codice della Useform1, togli la routine UserForm_Terminatesuggerita da me in precedenza e sostituisci il codice della routine CommandButton1_Click con la seguente versione:

'=========>>

Private Sub CommandButton1_Click()

    Const sText As String = "certificati"

    With TextBox1

        If UCase(.Text) <> UCase(sText) Then

            Call MsgBox("Password Errata!!!", vbCritical, "ATTENZIONE")

            .SetFocus

            .SelStart = 0

            .SelLength = Len(TextBox1.Text)

            Exit Sub

        Else

            Unload Me

        End If

    End With

End Sub

'<<=========

===

Regards,

Norman

La risposta è stata utile?

0 commenti Nessun commento

5 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2016-03-14T11:39:34+00:00

    grazie a tutti come al solito.

    Siete sempre gentili nel capire le mie esigenze pur esprimendomi con linguaggio errato.

    Saluti

    Giuseppe

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-03-13T22:03:23+00:00

    Ciao Norman,

    siete sempre fantastici nel risolvere tutti i miei problemi.

    Il codice funziona alla grande però nel mio caso ho riscontrato questi problemi:

    Nel workbook open ho :

    Private Sub Workbook_Open()

    Application.Visible = False

    End Sub

    Nella userform1 ho:

    Private Sub UserForm_Terminate()

    With Application

    .DisplayAlerts = False

    .Visible = True

    ThisWorkbook.Close SaveChanges:=True

    .DisplayAlerts = True

    End With

    End Sub

    Nel woekbook close ho:

    Private Sub Workbook_BeforeClose(Cancel As Boolean)

    Application.Visible = True

    End Sub

    Adesso con questa soluzione funziona tutto alla grande, cioè, se ho altri file di excel aperti quando chiudo questo gli altri tornano visibili. Fin qui tutto ok, il problema è:

    Ho sulla userform un commandbutton che mi permette, dietro password, di scaricare la userform e far riapparire il foglio in caso ne avessi bisogno per apportare delle modifiche.

    Il codice sotto al commandbutton è il seguente:

    If TextBox1.Text <> "certificati" Then

    Dim messaggio As String

    messaggio = MsgBox("Password Errata!!!", vbCritical, "ATTENZIONE")

    TextBox1.SetFocus

    TextBox1.SelStart = 0

    TextBox1.SelLength = Len(TextBox1.Text)

    Exit Sub

    Else

    Unload Me

    Unload UserForm1

    Application.Visible = True

    End If

    Con l'istruzione che ho nella userform Terminate ho dovuto togliere ThisWorkbook.Close SaveChanges:=True

    altrimenti quando scaricavo il form mi chudeva anche il foglio e poi vorrei fare in modo che in caso di altri file excel aperti prima dell'esecuzione di questo programma, gli stessi possano essere consultabili anche durante l'esecuzione del programma stesso.

    Con questi codici, quando eseguo il programma, tutti gli altri file spariscono dalla barra di windows e si visualizzano solo quando chiudo il programma con l'istruzione nella Userform_Terminate o nella Workbook_BeforeClose.

    C'è una possibilità di nascondere solo il foglio di lavoro della userform e lasciare tutti gli altri visibili sempre?

    Anticipatamente ringrazio

    Saluti

    Giuseppe

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-03-13T12:23:44+00:00

    Ciao Giuseppe,

    Incorporando gli ottimi suggerimenti di Fratello Mauro dal tuo ultimo thread, prova qualcosa del genere:

    '=========>>

    Option Explicit

    '--------->>

    Private Sub UserForm_Terminate()

        With Application

            .DisplayAlerts = False

            .Visible = True

            ThisWorkbook.Close SaveChanges:=True

            .DisplayAlerts = True

        End With

    End Sub

    '<<=========

    Per la sicurezza, vorrei anche suggerire l'inserimento della seguente routine evento nel modulo di codice dell'oggetto ThisWorkbook:

    '=========>>

    Private Sub Workbook_BeforeClose(Cancel As Boolean)

        Application.Visible = True

    End Sub

    '<<=========

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2016-03-13T11:57:09+00:00

    Ciao Giuseppe,

    Supponendo che, come indicato nel tuo thread precedente, il file sia aperto con l'istruzione

          Application.Visible = False

    nel suo evento Workbook.Open, nel modulo di codice della Userform di interesse, incolla la seguente routine:

    '=========>>

    Private Sub UserForm_Terminate()

        Application.Visible = True

    End Sub

    '<<=========sw

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento