VBA EXCEL - EVITARE LO SCROLLING DELLO SCHERMO

Anonimo
2022-01-21T15:25:53+00:00

Ho una cartella Excel nella quale sul Foglio1 faccio eseguire delle macro che durante l'esecuzione devono prelevare dati anche da altri fogli. Durante l'esecuzione quindi lo schermo si aggiorna continuamente durante i passaggi da un foglio all'altro.
Chiedo quale sia il codice affinché la macro prelevi i dati senza mostrare continuamente l'apertura e chiusura degli altri fogli.
Sperando di essere stato chiaro, Grazie.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2022-01-21T16:14:03+00:00

Ciao Luigi,

qui Daniele, bentrovato nella community Microsoft,

all'inizio della routine basta aggiungere

Application.ScreenUpdating = False

e alla fine

Application.ScreenUpdating = True

Attenzione che se la routine va in errore e non è stato reimpostato

Application.ScreenUpdating = True

Excel potrebbe sembrare non rispondere più ai comandi, pertanto di solito è consigliabile gestire eventuali errori di routine.

La risposta è stata utile?

3 persone hanno trovato utile questa risposta.
0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2022-01-21T17:00:21+00:00

Ciao Luigi,

Ho una cartella Excel nella quale sul Foglio1 faccio eseguire delle macro che durante l'esecuzione devono prelevare dati anche da altri fogli. Durante l'esecuzione quindi lo schermo si aggiorna continuamente durante i passaggi da un foglio all'altro.
Chiedo quale sia il codice affinché la macro prelevi i dati senza mostrare continuamente l'apertura e chiusura degli altri fogli.
Sperando di essere stato chiaro, Grazie.

Oltre all'ottima suggerimento di Daniele, io eviterei la selezione e il cambio dei fogli: questo è molto raramente necessario ed è lento e inefficiente. È decisamente preferibile assegnare i fogli di interesse alle variabili oggetto e manipolare queste variabili per restituire i dati desiderati.

Se dovessi riscontrare problemi nell'adattare il tuo codice di conseguenza, pubblica una sezione limitata del codice e lo adatterò io.

==

Regards,

Norman

Immagine

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

3 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2022-01-24T12:49:19+00:00

    Ciao Luigi,

    hai perfettamente compreso il mio problema, ma ribadisco che la colpa è solo mia non avendo specificato che "con lo ScreeningUpdating" non risolvevo il problema. Infatti ho un Foglio2 contenente una massa dati di circa 7000 record (Database) ed un Foglio 1 sul quale faccio tutte le elaborazioni proprio per evitare di passare continuamente da un foglio all’altro. Il problema è che ho la necessità di copiare ed incollare, dal Foglio2, 10 colonne per volta sul Foglio1, elaborarle, poi copiarne altre 10, elaborarle e così via per un certo numero di volte, questo è il passaggio che mi comporta il movimento sul display che non risolvo del tutto con il “Application.ScreenUpdating”.
    Ho risolto, grazie alla tua imbeccata, invece, abolendo il copia/incolla ciclico delle mie 10 colonne, mettendo sul Foglio1 il riferimento ciclico alle colonne del Foglio2. Così evito il copia/incolla ed il passaggio da un foglio all’altro.
    Poiché sarei comunque interessato al tuo suggerimento di “assegnare i fogli di interesse alle variabili oggetto e manipolare queste variabili per restituire i dati desiderati”, appena possibile proverò a sottoporti un file ridotto sul quale mi potrai dare la giusta dritta.

    Se sei riluttante a pubblicare il tuo file su un forum pubblico, puoi inviarmi il tuo file in privato utilizzando l'indirizzo email decifrabile che troverai cliccando sul mio profilo.

    ==

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2022-01-24T12:33:36+00:00

    Ciao Norman, hai perfettamente compreso il mio problema, ma ribadisco che la colpa è solo mia non avendo specificato che "con lo ScreeningUpdating" non risolvevo il problema. Infatti ho un Foglio2 contenente una massa dati di circa 7000 record (Database) ed un Foglio 1 sul quale faccio tutte le elaborazioni proprio per evitare di passare continuamente da un foglio all’altro. Il problema è che ho la necessità di copiare ed incollare, dal Foglio2, 10 colonne per volta sul Foglio1, elaborarle, poi copiarne altre 10, elaborarle e così via per un certo numero di volte, questo è il passaggio che mi comporta il movimento sul display che non risolvo del tutto con il “Application.ScreenUpdating”.
    Ho risolto, grazie alla tua imbeccata, invece, abolendo il copia/incolla ciclico delle mie 10 colonne, mettendo sul Foglio1 il riferimento ciclico alle colonne del Foglio2. Così evito il copia/incolla ed il passaggio da un foglio all’altro.
    Poiché sarei comunque interessato al tuo suggerimento di “assegnare i fogli di interesse alle variabili oggetto e manipolare queste variabili per restituire i dati desiderati”, appena possibile proverò a sottoporti un file ridotto sul quale mi potrai dare la giusta dritta.
    Grazie ancora per la tua disponibilità.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2022-01-24T12:29:34+00:00

    Grazie Daniele, scusami per aver formulato male la domanda omettendo di dire che il problema non lo risolvevo con "Application.ScreenUpdating = False".
    Ciao.

    La risposta è stata utile?

    0 commenti Nessun commento