Problema UserForm con più file aperti



  • Problema UserForm con più file aperti
    di Gino (utente non iscritto) data: 30/03/2015 09:33:37

    Salve, mi scuso in anticipo perché sono un neofita di VBA per EXCEL e sicuramente il mio problema è una stupidaggine, ma non riesco a venirne a capo...
    Ho creato un UserForm che visualizza i dati di un file Excel costituito da un solo foglio di lavoro. Per rendere la cosa più simile a una applicazione vera all'apertura del documento riduco a icona Excel e visualizzo direttamente lo UserForm.
    Il problema è che se il file aperto è solo quello l'applicazione funziona benissimo, se invece, per esempio, c'è già un altro file Excel aperto lo UserForm punta su questo e quindi genera errore...
    Ringrazio in anticipo chiunque mi darà un aiuto...



  • di Lucas87 data: 30/03/2015 10:21:07

    Ciao
    Ti succede perchè non hai specificato il foglio su cui scrivere nelle istruzioni del form.
    Ad esempio hai scritto Range("a1")=3 oppure ActiveSheet.Range("a1")=3 e quindi verrà utilizzato il foglio attivo.
    Puoi specificare il foglio con Sheets(1).Range("a1")=3 oppure puoi far in modo che il form venga nascosto quando viene selezionato un file excel diverso.



  • di Gino (utente non iscritto) data: 30/03/2015 10:36:55

    Ciao, grazie per l'interessamento!
    Ho cercato di mettere sempre, come dire, "riferimenti assoluti" specificando WorkSheets("Nome foglio").Range... su tutto il codice per evitare il problema che poi si è proposto...
    Ho verificato che è proprio il Workbook quello sbagliato...
    Grazie ancora!



  • di Gino (utente non iscritto) data: 30/03/2015 13:00:39

    Faccio aprire lo UserForm sull'evento apertura di ThisWorkBook... non capisco perché non è quest'ultimo il file attivo...
    Qualche suggerimento?
    Non riesco proprio a trovare il motivo.......



  • di scossa data: 30/03/2015 13:22:06

    cit.: "Qualche suggerimento?"

    Non trovi che sia difficile darti un suggerimento senza vedere il tuo codice?
    Allega un file di esempio.




    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)



  • di Lucas87 data: 30/03/2015 14:25:51

    Cit "Ho verificato che è proprio il Workbook quello sbagliato..."

    Credo tu ti sia dato da solo la risposta.
    Devi specificare anche il workbook sul quale agire, altrimenti il form esegue il codice su quello attivo



  • di Gino (utente non iscritto) data: 30/03/2015 14:51:22

    Grazie per le risposte intanto...
    Mi scuso perché credo sia la mia ignoranza a causare tutto, comunque esasperato ho fatto il seguente test:

    Ho prima aperto il file A.xlsm, poi il file B.xlsm che comprende i seguenti codici:

    Private Sub Workbook_Open()
    Workbooks("B.xlsm").Activate
    Frm.Show
    End Sub

    Private Sub UserForm_Activate()
    Workbooks("B.xlsm").Activate 'per ribadire il concetto
    MsgBox ActiveWorkbook.Name
    ...
    La risposta del msgbox visualizzata è A.xlsm



  • di Lucas87 data: 30/03/2015 15:56:13

    A me indica B
    Ho provato a scambiare i file e modificare il codice e indica A (come è giusto che sia)
    A questo punto credo ci sia qualcosa che non va nei tuoi codici
    Prova così:
    Nell'evento Open metti questo

    scrivendo thwbk.sheets(1)......farai sempre e comunque riferimento al file corretto
     
    Set thwbk=thisworkbook
    
    



  • di Gino (utente non iscritto) data: 30/03/2015 16:29:00

    Ho provato a fare come hai detto e ho anche messo il seguenti msgbox:

    MsgBox thwbk.Sheets(1).Name

    sull'evento Open del Workbook: funziona!
    sull'evento Activate della Form: errore di run-time 424 necessario oggetto!



  • di Lucas87 data: 30/03/2015 17:14:20

    Giusto...Devi dichiarare la variabile public nel modulo1 (se non ce l'hai crealo) in modo che possa essere usata in tutti i moduli
     
    Public thwbk as Workbook



  • di Gino (utente non iscritto) data: 30/03/2015 17:35:03

    Intanto ti ringrazio Lucas87 perché credo tu mi abbia risolto il problema...
    Ma proverò stasera a modificare tutto il codice...
    Grazie ancora!



  • di Gino (utente non iscritto) data: 31/03/2015 09:06:50

    Problema risolto! Grazie!!!