Problema banale di apertura chiusura form chiamante/chiamata

di il
5 risposte

Problema banale di apertura chiusura form chiamante/chiamata

Mi scuso della banalità, ma ho un piccolo problema che mi blocca.

Ho una piccola applicazione scritta in VBA con una serie di form che devono interagitre tra loro.
Facico un esempio dando dei nomi parlanti per potermi spiegare al meglio.
frmChiamante   deve passare il controllo alla formChiamata.
Il codice che utilizzo è:

Sulla frmChiamante ho un pulsante con la quale devo aprire la frmChiamata
Il codice usato è:
frmChiamata.show
unload me  ( con la quale chiudo la frmChiamante)

quando finisce le attività della frmChiamata, devo ritornare il controllo alla frmChiamata.
Il codice che ho inserito sul bottone della frmChiamata è il seguente:
frmChiamante.show
Unload me (con la quale chiudo la frmChiamata)

Mi sembra che il codice sia coerente, ma sbaglio sicuramente qualcosa.
Resto a disposizione
Grazie
Moreno

5 Risposte

  • Re: Problema banale di apertura chiusura form chiamante/chiamata

    18/12/2025 - morenog ha scritto:

    Mi sembra che il codice sia coerente

    Ma non lo è. Studia l'esempio che la guida fa per il metodo Show, è identico alla tua esigenza. Di diverso ha che gestisce il Click sulla Form invece di avere dei CommandButtons dedicati

  • Re: Problema banale di apertura chiusura form chiamante/chiamata

    Perché tu prima mostri la UserForm chiamata e poi chiudi quella chiamante. Il metodo .Show della UserForm prevede il parametro Modal (che di default è vbModal). Quindi vuol dire che tu non puoi interagire con nulla finché la UserForm è mostrata. Quindi devi fare il contrario...prima chiudi la UserForm e poi mostri l'altra.

    nel Button della UserForm1:

    Unload me
    UserForm2.Show

    nel Button della UserForm2:

    Unload me
    UserForm1.Show
  • Re: Problema banale di apertura chiusura form chiamante/chiamata

    Grazie a tutti per il contributo.
    Sono riuscito a risolvere il problema gestendo le chiamate tra le form aprendo la form di dettaglio a più basso livello gestendo la chiamata in modalità modal.

    esempio

    formA -----> chiamo la formB  con formb.show

    formB -----> chiamo la formC con vbModal
                          quando chiudo torno alla formA

    formC ------> quando chiudo torno alla formB

    Spero che il disegnino delle chiamate tra form sia sufficientemente esaustivo, ma funziona benissimo.
    Grazie per l'attenzione e i preziosi consigli.
    Grazie

    Moreno

  • Re: Problema banale di apertura chiusura form chiamante/chiamata

    Però così adesso lo schema è diverso rispetto a come l'hai esposto all'inizio. Tu prima dicevi di mostrare la successiva form chiudendo la precedente (ovvero scaricare la form da dove è partita la macro che mostra la form successiva).

    Quindi:

    da formA ---> mostro formB e scarico formA

    da formB ---> mostro formC e scarico formB (se chiudo formB, mostra di nuovo formA)

    da formC ---> se chiudo formC mostro formB

    Invece adesso non stai facendo altro che mostrare una dopo l'altra le varie form senza scaricare la precedente.

    Per spiegarmi ancora meglio...scrivere:

    formB.Show

    è uguale a come scrivere

    fromB.Show vbModal  '<---vbModal è di default se omesso
  • Re: Problema banale di apertura chiusura form chiamante/chiamata

    18/12/2025 - morenog ha scritto:

    unload me  ( con la quale chiudo la frmChiamante)

    non la stai chiudendo ma distruggendo

    18/12/2025 - morenog ha scritto:

    frmChiamante.show

    non puoi richiamare un form distrutto perchè non esiste più

    prova con:

    Me.Hide
    frmChiamata.Show
    Me.Hide
    frmChiamante.Show

    https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/unload-statement

Devi accedere o registrarti per scrivere nel forum
5 risposte