UserForm che si ripropone



  • UserForm che si ripropone
    di JellyFish (sono iscrittissima) (utente non iscritto) data: 15/10/2012 11:05:11

    Again

    Ho messo in "This workbook" e nella form "Home" il codice in allegato.

    Quando apro contepiraneamente al mio file altri file in excel si vede home e se la clicco mi restituisce un errore perchè credo che il nuovo file non trovi alcun codice associato allora la chiudo.

    Quando torno sul mio file non la trov più :(

    Come posso risolvere? Non mi viene in mente nulla :(
     
    --- This Workbook ---
    
    Option Explicit
    
    Private Sub Workbook_Open()
    
        Home.Show
        
        Call Visualizza_Home
    
    End Sub
    
    Private Sub Workbook_Close()
    
    Dim Form As UserForm
    
    
        For Each Form In Worksheets
            If Form.Name <> "Home" Then
            Form.Visible = False
            End If
        Next
        
        Call Visuallizza_Home
    
    End Sub
    
    --- UserForm Home ---
    
    Option Explicit
    
    Private Sub CommandButton1_Click()
    
    Call Visualizza_Home
    Call Visualizza_Form_Gestione
    
    End Sub
    
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
         
        If CloseMode = 0 Then
            Cancel = True
            MsgBox "La maschera può essere spostata ma non può essere chiusa.", vbCritical
        End If
         
    End Sub
     



  • di Vecchio Frac data: 15/10/2012 11:47:02

    Ma scusa tanto Jelly iscrittissima (e perchè non fai il Login allora? ^_^)...
    La cosa che hai scritto qui per forza darà errore... dichiari "Form" come userform ma poi gli assegni un oggetti di tipo Sheet e cerchi di chiudere un foglio che in realtà dovrebbe essere una form...
    Cosa volevi chiudere? l'userform o il foglio? se l'userform, basta semplicemente un UnLoad Me.

    Private Sub Workbook_Close()
    Dim Form As UserForm '<--- qui dichiari la variabile come userform...

    For Each Form In Worksheets '<--- ...ma qui la associ ai fogli della cartella! non funziona così
    If Form.Name <> "Home" Then
    Form.Visible = False
    End If
    Next

    Call Visuallizza_Home
    End Sub





  • di Jellyfish data: 15/10/2012 13:44:23

    Volevo chiudere tutte le form del mio foglio tranne chimata "Home" quando chiudo il file. Cos' quando lo riapro vedo sempre come form "Home"

    Ma funziona anche così come l'ho scritta

    Per scriveral cossetta come faccio? Basta mettere "Forms" al posto di "worksheets"?

    Il mio problema è che questra form "Home", se ho aperto un altro file excell qualsiasi e il mio (con Form "Home" questa la vedo anche nel nuovo file aperto



  • di Jellyfish data: 16/10/2012 00:30:32

    ehmmmm che ho scritto oggi all'ora di pranzo?!?!?!... non si capisce nulla :( Provo a rispiegarmi perchè non ho risolto il problema :(

    Ho impostato una piccola form che compare all'apertura del file, non può essere chiusa ma solo spostata.
    Il codice lo avevo già postato.
    Ora però se contemporaneamente apro un altro file excel, la piccola form si vede anche in questo file.
    Come faccio a fare in modo che la form si veda solo nel suo file, dove è stata generata e dove ci sono tutti i suoi codici di riferimento?

    @Vecchio Frac

    Il con il codice che mi hai commentato volevo dire

    "quando chiudi il file chiudi anche tutte le Form tranne quella che si chiama "Home". Non so perchè ma funziona anche con "in Worksheets" tuttavia se mi dici che la sintassi è sbagliato come la potrei scrivere correttamente?

    Grazie ancora
    Giorgia



  • di Vecchio Frac data: 16/10/2012 11:16:17

    Il tuo nome mi piace molto, peccato nasconderlo sotto "Jelly" :)

    cit. " Ora però se contemporaneamente apro un altro file excel, la piccola form si vede anche in questo file. "
    --> sì, perchè l'hai resa modale e perciò obbligatoria. Finchè non la chiudi rimane visibile. Butto lì l'idea, ma intercettando il Deactivate del foglio da dove viene lanciata la Userform potresti renderla visibile o meno (Hide / Show)

    cit. " quando chiudi il file chiudi anche tutte le Form tranne quella che si chiama "Home"
    -->
    For Each uf in Userforms
    if uf.name <> "Home" Then unload uf
    next





  • di Jellyfish data: 17/10/2012 12:59:28

    Ehmmmm

    Ciao Vecchio Frac,

    Ho iserito il tuo codice e funziona tutto... e ora dovrebbe essere anche corretto

    La cosa strana è che da quando ho fatto la modifica non ho nemmeno più maschere che si ripropongono su altri file!!!

    Per me è risolto
    Grazie ancora!
     
    Option Explicit
    
    Private Sub Workbook_Open()
    
        Home.Show
        
        Call Visualizza_Home
        
        Range("A1").Select
    
    End Sub
    
    Private Sub Workbook_Close()
    
    Dim Form As UserForm
    
        For Each Form In UserForms
            If Form.Name <> "Home" Then
            Unload Form
            End If
        Next
        
        Call Visuallizza_Home
    
    End Sub



  • di Jellyfish data: 12/11/2012 18:58:32

    Nulla quella piaccola macherina che voglio sempre aperta nel mio file, ma solo nel mio file, si rirpopone su tutti gli altri file aperti. Così se mi sbaglio e la clicco quando sono su un altro foglio mi va in debug :(.

    C'è sempre perchè l'ho messa su Thisworkbook con il codice in allegato...

    Forse la dovrei mettere su tutti i fogli... o sul foglio principale... cma come si scrive il codice? e dove?
     
    Private Sub Workbook_Open()
    
        Home.Show
        
    End Sub



  • di Jellyfish data: 12/11/2012 21:59:14

    levo la spunta :(



  • di HarryBosch data: 12/11/2012 23:09:24

    Ciao Jelly
    solo per curiosità: perché ti interessa avere la userform attiva mentre apri un altro file Excel?
    Devi recuperare delle informazioni dal file che apri?



  • di Jellyfish data: 13/11/2012 08:11:40

    Harry, apro gli altri file perchè devo copiare delle informazioni sul mio file principale...

    mi piacerebbe proprio non vederla la machera quando sono sugli altri file oppure che fosse inattiva ma proprio non ci riesco, ho provato un po' ma nulla :(

    potrei importare i fogli che copio direttamente ma questo comporterebbe cmq di salvare i file in un determinato modo delle cartelle e bla bla bla... e mettere altri controlli, alla fine sono 9 copia e incolla da fare una volta l'anno... e cmq il problema della maschera che si ripropone rimane...

    ti viene in mente qualcosa?




  • di HarryBosch data: 13/11/2012 08:36:59

    Beh, per esempio che possiamo recuperare i dati senza aprire necessariamente l'altro file Excel.
    A patto di sapere dove si trovano.



  • di Jellyfish data: 13/11/2012 09:45:50

    Posso strutturare un directory carina e ordinata ma poi devo stare attenta a mettere solo un file o il file ocn quel determinato nome... e se si sbagli... in realta il copia incolla richiede un certo sforzo umano... vi aveo già chiesto, ho provato... troppo complesso.

    Poi mi rimande il fatto che questa maledetta mascherina si ripropone sugli altri file excel... metti che mentre ho il mio tool apero voglio aprire un altro file perchè un collega mi chiede una cosa... preferirei risolvere il problema della maschera...

    Ma non si può dire "bella mascherina se non sei sul file che ti genera stai nascosta" mi accontenterei anche di digli "disattivati"...



  • di Vecchio Frac data: 13/11/2012 10:22:31

    Ciao Jelly, bentornata :)

    cit. " Ma non si può dire "bella mascherina se non sei sul file che ti genera stai nascosta" mi accontenterei anche di digli "disattivati"... "
    ---> Ho risimulato la situazione, creando una userform non modale (sicchè posso navigare nel foglio e aprire altri fogli) e infatti rimane in primo piano anche aprendo altri file. Adesso ci smanetto un attimo, vediamo cosa riesco a dirti.
    Sul fatto di poter accedere a fogli chiusi senza bisogno di aprirli, la tecnica è semplice e il copia incolla è privo di errori se si sa a priori cosa va copiato e dove, lasciamo fare a Excel questo sforzo umano :)





  • di Vecchio Frac data: 13/11/2012 10:48:30

    Bene, ho fatto alcune prove, forse ci siamo :)
    Nella sezione ThisWorkbook del file che contiene e apre l'userform devi inserire il codice per nascondere/mostrare la form quando disattivi/attivi il Workbook stesso.

    L'userform è stata aperta in modalità non modale per consentire di aprire altri file Excel:
    da qualche parte quando viene richiamata l'userform deve esserci un'istruzione simile a questa:
    UserForm1.Show vbModeless
     
    Option Explicit
    
    'siamo in ThisWorkbook del file che contiene l'userform principale
    Private Sub Workbook_Activate()
        UserForm1.Show
    End Sub
    
    Private Sub Workbook_Deactivate()
        UserForm1.Hide
    End Sub






  • di Jellyfish data: 13/11/2012 13:02:26

    SEI UN GENIOOOOOOOOOOO !!!! SIIIIIIIIIIIIII FUNZIONAAAAAAA

    sorry per lo sfogo ma sono gg che provo ma nulla :(

    Grazie mille!!!