Domenico tende a lavorare su due monitor e ad avere più cartelle di lavoro aperte sulla stessa istanza di Excel. Massimizza anche le sue finestre (si descrive come il tipo che preferisce “vedere tutto in un colpo solo”). Recentemente, quando Domenico fa qualcosa che apre una finestra di dialogo modale (cioè, che richiede all’utente di rispondere prima di continuare), la finestra si apre dietro alla cartella di lavoro, impedendogli di vedere la finestra di dialogo o di interagire con essa. Si chiede se esista un modo per far apparire le finestre di dialogo modali davanti alla cartella di lavoro.
Prima di rispondere è bene precisare che le finestre di dialogo possono essere di due tipi: modali e non modali. Una finestra di dialogo non modale è una finestra di dialogo praticamente indipendente dal programma a cui appartiene. Un buon esempio di tale finestra di dialogo è la finestra Trova e sostituisci. D’altra parte, è invece necessario rispondere o chiudere una finestra di dialogo modale (quelle con cui Domenico ha problemi) prima di poter continuare a lavorare con il programma a cui appartiene la finestra di dialogo.
Non è chiaro se il problema di Domenico riguardi le finestre di dialogo modali generate dallo stesso Excel o se si tratta di finestre di dialogo generate da macro su cui lui ha il controllo. Se è il primo caso, allora c’è ben poco che si possa fare; il “livello/strato” in cui è posizionata la finestra di dialogo è controllata interamente dal programma (e dai programmatori che lo hanno creato). In altre parole, sarebbe necessaria una modifica al codice per far sì che la finestra di dialogo appaia sovrapposta alla cartella di lavoro anziché sotto di essa.
Tieni presente che esiste uno scenario in cui il problema potrebbe non essere dovuto a un problema di programmazione di Excel. È possibile che sul sistema sia in esecuzione un’applicazione di terze parti che influisce sulla stratificazione delle finestre di dialogo e delle relative finestre principali. I tipici colpevoli di questo scenario sono le utility residenti in memoria che si costringono ad apparire sempre sopra qualunque altra cosa sia presente sullo schermo. L’unico modo per vedere se questo è il colpevole è disabilitare il caricamento di tali utilità e, all’interno di Excel, visualizzare una finestra di dialogo modale. Se il comportamento ritorna normale, allora conosci l’origine del problema.
Se, tuttavia, la finestra di dialogo viene generata da una macro sviluppata da Domenico, la soluzione è modificare il codice che genera la finestra di dialogo modale (nelle macro di Excel questi tipi di finestre di dialogo sono in genere implementati tramite UserForm).
Il problema con il posizionamento del UserForm in scenari con più schermi viene superato dal posizionamento manuale del UserForm all’interno del suo codice di avvio. Ad esempio, puoi utilizzare qualche variazione di questo codice:
Questo contenuto è riservato agli abbonati
Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.
Se sei già abbonato Accedi per sbloccare il contenuto!
In caso contrario abbonati qui! L'abbonamento è conveniente.
E puoi interromperlo in ogni momento e in completa autonomia.
(puoi renderti conto di quanti siano i contenuti riservati
raggiungendo questa pagina)
Potrebbe essere necessario sperimentare il posizionamento, ma è necessario impostare la proprietà StartUpPosition su 0 in modo che VBA sappia che desideri posizionare manualmente il form utente.