Condividi:        

Rendere invisibile UserForm ed apparire il foglio di lavoro.

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Rendere invisibile UserForm ed apparire il foglio di lavoro.

Postdi pacifico » 13/02/17 17:17

Gent.mi,

non riuscendo a risolvere un problema nuovamente sono a chiederVi un aiuto.
Ho tre fogli di lavoro e una UserForm con alcuni pulsanti.
Ho inserito in: "Questa cartella di lavoro: Private Sub Workbook_Open()" il seguente codice:

> Application.Visible = False
> UserForm1.Show

regolarmente i fogli non sono visibili ed appare l'UserForm.
Gradirei e al momento non riesco che al cliccare di un pulsante, l'UserForm dovrebbe sparire ed apparire il foglio3.
Ho usato vari codici senza riuscire cito un codice di esempio:

> Sheets("Foglio3").Visible = True
> Unload UserForm1

UserForm diventa invisibile ed il foglio3 non appare.
Inoltre gradirei che al Foglio3 tramite un comando, il foglio dovrebbe diventare invisibile e apparire UserForm.
Anticipatamente ringrazio per il supporto e fiducioso, saluto.

Domenico.
pacifico
Utente Senior
 
Post: 200
Iscritto il: 05/10/06 16:20

Sponsor
 

Re: Rendere invisibile UserForm ed apparire il foglio di lav

Postdi Marius44 » 13/02/17 17:21

Ciao Pacifico

Guarda che col primo codice non hai detto ad Excel di nascondere i Fogli ma gli hai detto di nascondere Excel stesso.
Quindi, quando gli dici "fammi vedere il Foglio3" non può mostrartelo perchè "Excel è nascosto"

Prova a nascondere i singoli (se non sono tanti) Fogli anzichè nascondere Application.
Ciao,
Mario
Marius44
Utente Senior
 
Post: 658
Iscritto il: 07/09/15 22:00

Re: Rendere invisibile UserForm ed apparire il foglio di lav

Postdi pacifico » 13/02/17 17:31

Gent.mo Marius44,

ringrazio della tempestività.

I fogli in totale saranno 11 se gentilmente puoi fornire il codice per nascondere i fogli che al momento sono confuso.

Saluto.

Domenico.
pacifico
Utente Senior
 
Post: 200
Iscritto il: 05/10/06 16:20

Re: Rendere invisibile UserForm ed apparire il foglio di lav

Postdi Marius44 » 13/02/17 19:03

Ciao Domenico
Andiamo per tentativi (in mancanza del tuo file)

Al momento dell'apertura del file in ThisWorkbook inserisci
Codice: Seleziona tutto
Private Sub Workbook_Open()
For i = 1 To Sheets.Count
    Sheets(i).Visible = False
Next i
Userform1.Show
End Sub


Metti un CommandButton e una TextBox sulla UserForm. Nella TextBox inserisci di volta in volta il "numero del Foglio" che vuoi far vedere. Associa questo codice al CommandButton
Codice: Seleziona tutto
Private CommandButton1_Click()
    fgl = CDbl(tetxbox1.Value)
    Sheets(fgl).Visible = True
    Unload.Userform1
End Sub


Infine, in ogni Foglio metti una Forma oppure un Pulsante (NON ActiveX) e associa ad ognuno questo codice

Codice: Seleziona tutto
Sub NascondiFoglio()
    ActiveSheet.Visible = False
    Userform1.Show
End Sub


Credo dovrebbe funzionare. Fai sapere. Ciao,
Mario
Marius44
Utente Senior
 
Post: 658
Iscritto il: 07/09/15 22:00

Re: Rendere invisibile UserForm ed apparire il foglio di lav

Postdi pacifico » 13/02/17 20:18

Gent.mo Marius44,

sono rammaricato nel darti ancora fastidio e purtroppo non sono riuscito.

Chiedo scusa e a tal proposito, invio il file affinchè possa corregere ciò che ho fatto.

Interessa che dall'UserForm che sono tre button mi vadano ad aprire il foglio3 nascondendo gli altri due fogli e dal foglio3 chiudendo dal pulsante mi si dovrebbe riapparire l'UserForm nascondendo il foglio3.
Rinnovo le scuse ed auguro che l'applicazione vada a buon fine.

A titolo informativo è un applicazione che dovrebbe essere inserita in progetto in fase di lavorazione.

Mi scuso non sono riuscito ad inviare il file con il Forum ed invio il link dove prelevare.
http://www.mediafire.com/file/o25f1r2bq ... va_bis.rar

saluto e grazie.

Domenico.
pacifico
Utente Senior
 
Post: 200
Iscritto il: 05/10/06 16:20

Re: Rendere invisibile UserForm ed apparire il foglio di lav

Postdi Anthony47 » 13/02/17 23:53

Le userform sono oggetti concettualmente non semplici da programmare, perche' tutto va relazionato agli "eventi" che i controlli (pulsanti, textbox, etc) generano.
Inoltre non c'e' bisogno di nascondere Excel quando visualizzi una userform perche' dopo il comando UserForm1.Show l'utente non ha piu' accesso a Excel, ma solo alla form.

Comunque ho guardato il file e ho rivisto il codice associato alla userform (parecchi errori di sintassi); ho anche qualche dubbio sul modo di operare: nei textbox l'utente deve mettere il "numero" del foglio o un "nome"? Vedi commenti nel codice.

Inoltre sul Workbook_Open tu cerchi di rendere non visibili tutti i fogli di lavoro, ma questo e' impossibile perche' excel vuole che almeno un foglio di lavoro sia visibile; quindi ho modificato il codice per lasciare visibile "l'ultimo" foglio di lavoro.

Interessa che dall'UserForm che sono tre button mi vadano ad aprire il foglio3 nascondendo gli altri due fogli e dal foglio3 chiudendo dal pulsante mi si dovrebbe riapparire l'UserForm nascondendo il foglio3
Per quanto appena detto, l'operazione e' impossibile: almeno 1 foglio deve essere visibile.

Insomma penso che devi rivedere l'impostazione del tuo progetto, solo dopo puoi passare all'implementazione.
Il foglio che ho modificato come detto sopra e' reperibile qui:
https://www.dropbox.com/s/lpmgfg4gp5r8e ... .xlsm?dl=0

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Rendere invisibile UserForm ed apparire il foglio di lav

Postdi pacifico » 14/02/17 10:16

Gent.mo Anthony44,

nel ringraziarti per la disponibilità e al codice fornito che va bene, gradirei gentilmente tre modifiche per terminare l'applicazione.

Considerando che un foglio debba essere visibile, gradirei che sia sempre il foglio1 e gli altri nascosti visualizzando UserForm.

Eliminare la TextBox. Cliccando sul button dovrebbe apparire sempre il Foglio3 e nascondere il Foglio1 e la UserForm.

Dal foglio3, cliccando sul button dovrebbe nascondere il foglio3 ed apparire il foglio1 con la UserForm.

Mi scuso per l'incombenza ed anticipatamente ringrazio per la gentile collaborazione, saluto.

Domenico.
pacifico
Utente Senior
 
Post: 200
Iscritto il: 05/10/06 16:20

Re: Rendere invisibile UserForm ed apparire il foglio di lav

Postdi pacifico » 14/02/17 12:03

Gent.mo Anthony44,

riguardo la 2° modifica alla eliminazione del TexBox sono riuscito ed auguro di riuscire ai restanti punti che al momento non riesco.

Ringrazio e saluto.

Domenico.
pacifico
Utente Senior
 
Post: 200
Iscritto il: 05/10/06 16:20

Re: Rendere invisibile UserForm ed apparire il foglio di lav

Postdi pacifico » 14/02/17 15:07

Gent.mo Anthony44,

scusa sono riuscito anche al 1° punto modificando il codice riguardo al Foglio1 visibile con UserForm e le rimanenti Fogli nascosti.

Cliccando sul pulsante, UserForm sparisce ed appare regolarmente il Foglio3.

Purtroppo non riesco e chiedo un aiuto se puoi che, visualizzando il Foglio3 dovrebbe nascondere il Foglio1 ciò non avviene e noto che sia il Foglio1 che il Foglio3 sono visibili.

Ringrazio per la cortesia, saluto.

Domenico.
pacifico
Utente Senior
 
Post: 200
Iscritto il: 05/10/06 16:20

Re: Rendere invisibile UserForm ed apparire il foglio di lav

Postdi Anthony47 » 15/02/17 01:58

Lieto di vedere che vai avanti anche da solo
Devi prima abilitare Foglio3 e poi puoi nascondere Foglio1:
Codice: Seleziona tutto
Sheets("Foglio3").Visible = True
Sheets("Foglio1").Visible = False

Tieni presente che in XL2013 e 2016 lo switching tra i fogli mentre e' attiva una userform e' alquanto problematica, se la form e' aperta in modalita' "Modal" (quella di default); a volte non lo fa, a volte (molto peggio) fa finta di farlo ma non lo fa, raramente lo fa bene.
Quindi se operi con queste versioni ripensiamo a quel che stiamo facendo...

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Rendere invisibile UserForm ed apparire il foglio di lav

Postdi pacifico » 15/02/17 09:40

Gent.mo Anthony44,

sono al capolinea e nelle varie prove di funzionamento noto un ostacolo che gradirei superare.
In Workbook_open ho inserito il seguente codice:
For I = 1 To Sheets.Count - 1
Sheets(I).Visible = False
Next I
UserForm1.Show

Tutti i Fogli sono nascosti ad eccezione del primo.
Se l'applicazione viene chiusa dal Foglio1 e riaperta, funziona regolarmente viceversa se viene chiusa dal Foglio3 e riaperta, mi esce l'errore:
> Imposibile impostare la proprietà Visible per la classe Workheet.
e la riga del codice: "Sheets(I).Visible = False" diventa giallo.

Nel ringraziare per la gradita disponibilità e pazienza, cordialmente saluto.

Domenico.
pacifico
Utente Senior
 
Post: 200
Iscritto il: 05/10/06 16:20

Re: Rendere invisibile UserForm ed apparire il foglio di lav

Postdi Anthony47 » 15/02/17 15:08

Devi tenere a mente che non puoi nascondere tutti i fogli; quindi se hai gia' fogli nascosti alla Workbook_Open devi fare ragionamenti diversi...
Facciamo cosi':
Nella workbook_Open prima apri tutti i Fogli, poi nascondi tutti meno uno che scegli tu nello stesso codice:
Codice: Seleziona tutto
Private Sub Workbook_Open()
fissosh = "Foglio1"            '<<< Foglio ESISTENTE che deve rimanere visibile
For I = 1 To Sheets.Count
    Sheets(I).Visible = True
Next I
For I = 1 To Sheets.Count
    If Sheets(I).Name <> fissosh Then Sheets(I).Visible = False
Next I
UserForm1.Show
End Sub

La riga marcata <<< deve essere compilata come da commento

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Rendere invisibile UserForm ed apparire il foglio di lav

Postdi ricky53 » 15/02/17 15:24

Ciao,
non sono certo di aver capito bene ... anche perchè
1. arrivo a discussione quasi conclusa
2. non hai detto se alla chiusura viene eseguita una macro che scopre i fogli o fa altre cose ...

Comunque prova questo codice:
Codice: Seleziona tutto
Private Sub Workbook_Open()
    Dim I As Integer, mNome As String
    mNome = ActiveSheet.Name
    For I = 1 To Sheets.Count
        If Sheets(I).Name <> mNome Then
            Sheets(I).Visible = False
        End If
    Next I
End Sub


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EDIT
NON avevo visto che Anthony ti aveva gia proposto una soluzione, inoltre, la mia è basata su una assunzione diversa, ossia:
nascondere tutti i fogli tranne quello attivo ma si presuppone che vi siano almeno due fogli visibili ... altrimenti gira ma non produce effetti visibili.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-19-21
Avatar utente
ricky53
Utente Senior
 
Post: 4588
Iscritto il: 11/04/09 19:29
Località: Italia


Torna a Applicazioni Office Windows


Topic correlati a "Rendere invisibile UserForm ed apparire il foglio di lavoro.":


Chi c’è in linea

Visitano il forum: Marius44 e 26 ospiti