› Excel e gli applicativi Microsoft Office › Azioni a tempo con Userform
-
AutoreArticoli
-
Buondì a tutti,
cercherò di spiegare al meglio il mio quesito
.Allora: ho una UserForm (nel foglio1) popolata da textbox e button, il tutto contenuto in una multipage. Nella userform è presente il codice che minimizza la userform stessa.
Il button serve a trasferire i dati, io compilo le textbox e clicco sul pulsante e i dati me li trasferisce nel foglio2 selezionandomelo (vuol dire che nel momento che clicco sul button, mi esce il foglio2 con i dati inseriti) l'azione che segue è la minimizzazione dell'userform per poter inserire alcuni dati sul foglio stesso, il tutto fatto manualmente (sulla barra dell'userform è presente questo trattino _ che serve a minimizzare appunto).
Quello che vorrei fare è questo: nel momento in cui clicco sul button che mi trasferisce i dati e mi seleziona il foglio 2 (e dopo aver minimizzato la userform), vorrei avere 1 minuto per poter inserire alcuni valori, scaduto il minuto mi fa ritornare sulla userform.
Sarebbe possibile fare questa operazione?
Di seguito allego un file di prova.
Ringrazio in anticipo per ogni suggerimento e buon inizio settimana
Allegati:
You must be logged in to view attached files.Poichè la form è visualizzata modeless (in assenza di parametro dopo Show si assume che sia vbModeless), significa che puoi interagire col foglio anche con la form aperta.
Io non pasticcerei col timer.
Se la vista della form ti è d'intralcio, puoi nasconderla (con Hide) e impostare un evento OnKey che ti permetta di riattivarla alla pressione di una coppia di tasti predefinita (ad esempio Shift-F1 o Ctrl-A).
Allego la mia proposta. I tasti chiave per la riattivazione sono Ctrl-Shift-freccia su (ma puoi cambiare se vuoi, controlla l'evento Open del Workbook). Ho eliminato il codice che inserisce il pulsante minimizza nel form, secondo me non serve.
Allegati:
You must be logged in to view attached files.Ciao vecchio frac, grazie mille per aver risposto.
Ho provato il tuo file in questo modo: apro l'userform dal button, inserisco i dati e clicco su inserisci ed effettivamente la form viene nascosta. Ma appena faccio la combinazione di tasti predefinita da te, non succede niente, non viene visualizzata.
Allora ho cambiato la combinazione di tasti in questi vari modi: "^{RIGHT}", "{F3}", "^+{a}" ma non succede niente.
Mi sarebbe molto utile il timer in quanto una volta che scade il minuto e mi visualizza l'userform, so che devo andare avanti con i dati.
Grazie mille per l'intervento
Ma appena faccio la combinazione di tasti predefinita da te, non succede niente,
Piuttosto strano, la combinazione di tasti si attiva all'apertura del file e funziona benissimo: non fa niente di speciale, attiva il form. Non servirebbe nemmeno premere il pulsante UForm, tanto per dire, perchè fa la stessa cosa. E chiaramente funziona con altre combinazioni di tasti.
Comunque imbastire un timer non è difficile, solo che se io fossi l'utente mi troverei un po' sconcertato dal fatto che mi si apra un form ogni tanto 🙂
Fatto, ora funziona..
Ho riaperto la cartella e con la mia combinazione di tasti la riapre.....
Però mi sarebbe molto utile il timer per la visualizzazione dell'userform e ti spiego il motivo:
chi inserirà i dati, può capitare che dimentichi la combinazione di tasti per visualizzare l'userform ed entra in panico e chiude tutto. Ecco perchè il timer, avendo tempo 1 minuto, una volta finito l'inserimento la userform appare e si può proseguire..
Ho riaperto la cartella
Era tutto lì il punto, non lo avevo evidenziato abbastanza.
Sto provando a smanettare con i timer ma mi si è impallato tutto quanto. la gestione dei timer in Excel è sempre piuttosto difficoltosa.
Ti allego una proposta con il timer (sul mio sistema funziona, magari su un sistema a 64 bit bisogna dichiarare PtrSafe le API che gestiscono il timer).
Non escludo che si verifichino dei problemi... fai sempre delle belle copie di backup 🙂
Allegati:
You must be logged in to view attached files.Ho dichiarato PtrSafe le API che gestiscono il timer ma mi riporta questo problema, ogni volta che minimizzo l'userform sia prima di inserire i dati che dopo, facendo uscire questo messaggio: "Type mismatch" evidenziando questa riga in questo codice..
Private Sub UserForm_Resize() 'attiva il timer ogni 3000 millisecondi timerID = SetTimer(0, 0, 3000, AddressOf show_form) Debug.Print "form resized, timer set " & timerID End Sub"AddressOf show_form" lo evidenzia in blu, mentre "Private Sub UserForm_Resize()" in giallo.
E scommetto che questo è uno dei problemi vero?

Allora proviamo la strada del timer interno di Excel... sempre più un ginepraio
Comunque così, per aggiungere mistero, ho appena provato, qui a casa, col mio sistema a 64 bit (anche Office a 64 bit) e funziona senza necessità di dichiarare PtrSafe le due API del timer. Mah.
Non so che dirti,ho il sistema operativo Windows 10 Home a 64-bit e Office 2016 per sistemi basati su 64 bit ma se non dichiaro PtrSafe mi dà errore.
Se dichiaro PtrSafe, il codice non funziona lo stesso
Allego una nuova versione. A me gira, ma mi sembra un po' un pasticcio 😛
Comunque prova.
Allegati:
You must be logged in to view attached files. -
AutoreArticoli
