Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Excel: problema con Application.ScreenUpdating

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Excel: problema con Application.ScreenUpdating

Postdi Flash30005 » 21/11/08 21:34

Ciao Anthony,
Ho un file di excel con una macro che lancio dal foglio INS_DATI nella stessa cartella c'è anche il foglio STORICO (che alla fine ho commentato) in quanto pur avendo inserito il codice di non fare l'update dello schermo mi ritrovo che excel lo esegue ugualmente e quindi mi ritrovo anche nei passi successivi un "lampeggiamento" di schermate fastidiose.
Devo dire che fino a ieri lo stesso programma funzionava egregiamente poi ho dovuto apportare delle modifiche all'interno (ma non qui all'avvio) e non capisco cosa sia successo.
Alla fine ho optato per non far vedere tutta l'applicazione con
Application.Visible = False
ma non mi soddisfa molto il fatto che si chiuda anche il foglio di avvio.
Puoi darmi qualche consiglio?

Perte iniziale della macro "incriminata":
Codice: Seleziona tutto
Sub CaricaDati()
    Application.ScreenUpdating = False
    Application.Calculation = xlManual
    Application.DisplayAlerts = False

    'Sheets("STORICO").Select
UA = Int((Worksheets("STORICO").Range("B" & Rows.Count).End(xlUp).Row) / 11)
    ChDir "C:\Programmi\Archivio"
    Application.Visible = False
    Workbooks.Open Filename:="C:\Programmi\Archivio\ArchivioNDb.xls"
    Windows("ArchivioNDb.xls").Activate


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Sponsor
 

Re: Excel: problema con Application.ScreenUpdating

Postdi Anthony47 » 23/11/08 17:00

Nella stragrande maggioranza dei casi l' uso di ".select" e' ridondante (oltre che rallentante) come dimostri anche tu con la scelta di non selezionare il foglio e ottenere ugualmente i dati che vuoi.
Nel caso specifico (ma in che fase lampeggiava?), non so immaginare un motivo logico per cui lampeggi. Lo fa sistematicamente anche dopo che riparti con excel?

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel: problema con Application.ScreenUpdating

Postdi Flash30005 » 23/11/08 19:27

Anthony47 ha scritto:Nella stragrande maggioranza dei casi l' uso di ".select" e' ridondante (oltre che rallentante) come dimostri anche tu con la scelta di non selezionare il foglio e ottenere ugualmente i dati che vuoi.
Nel caso specifico (ma in che fase lampeggiava?), non so immaginare un motivo logico per cui lampeggi. Lo fa sistematicamente anche dopo che riparti con excel?

Sul fatto della select hai ragione ne ho mesi diversi e molti inutili :oops: ora però avendo finito il programma e testato la funzionalità potrei rivedere dove eliminare le ridondanze.
Il "difetto" del codice Application.ScreenUpdating = False inzia con
Workbooks.Open Filename:="C:\Programmi\Archivio\ArchivioNDb.xls"
Windows("ArchivioNDb.xls").Activate
come riportato nel mio precedente post, e avviene ad ogni .select di fogli esterni o interni alla cartella di lavoro, in pratica viene completamente ignorato il codice Application.ScreenUpdating = False (inserirlo o non inserirlo è la stessa cosa).
Il problema è sistematico, non solo dopo riavvio di excel ma anche riavviando il Pc e addirittura cambiando Pc.
Aggiungo, anche se non credo sia influente, che il file ="C:\Programmi\Archivio\ArchivioNDb.xls" ha una query table di aggiornamento da una tabella di access. Dico ininfluente perché se non commento quel 'Sheets("STORICO").Select, prima del comando di apertura fogli esterni, mi appare il foglio Storico contenuto nella cartella di lavoro.
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel: problema con Application.ScreenUpdating

Postdi Flash30005 » 23/11/08 19:55

Aggiungo questa prova al mio post precedente.
Nella cartella ci sono 3 fogli
Foglio1
Storico
Foglio3

Ho messo il punto di interruzione su Sheets("Foglio3").Select quindi comando ancora da eseguire
Ho attivo il Foglio1
lancio la macro che si ferma sul punto di interruzione vado a vedere quale foglio mi sta visualizzando e mi trovo su STORICO è normale?
Allegati

[L’estensione rar è stata disattivata e non puó essere visualizzata.]

Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel: problema con Application.ScreenUpdating

Postdi Flash30005 » 24/11/08 00:43

Anthony,
A proposito di eliminare codici ridondanti e per evitare errori che fanno perdere tempo per eliminarli ti posto alcuni codici che ho utilizzato e che hanno bisogno di divenire più "fluidi":
Codice: Seleziona tutto
Windows("Flash.xls").Activate
    Sheets("STORICO").Select
    Columns("A:K").Select
    Selection.ClearContents
    Windows("ArchivioNDb.xls").Activate
    Columns("A:H").Select
    Selection.Copy
    Windows("Flash.xls").Activate
    Worksheets("STORICO").Select
    Columns("A:H").Select
    ActiveSheet.Paste
    Range("A1").Select
    Workbooks.Open Filename:="C:\Programmi\ArchivioDb.xls"
    Windows("ArchivioDb.xls").Activate
Ue = Worksheets(1).Range("B" & Rows.Count).End(xlUp).Row   
Range("A1:H" & Ue).Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("Flash.xls").Activate
    Range("A" & Un + 1 & ":H" & Un + 1).Select
    ActiveSheet.Paste
    Range("A1").Select
    For Each wb In Workbooks
        If wb.Name = "ArchivioDb.xls" Then wb.Close savechanges:=False
    Next wb

E poi con questa macro vario il nome di un campo
Codice: Seleziona tutto
Ue = Worksheets("Storico").Range("B" & Rows.Count).End(xlUp).Row
Worksheets("Storico").Select
NomeR = "PIPPO"
With Worksheets("STORICO").Range("B1:B" & Ue + 1)
    Set c = .Find(NomeR, LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
             c.Value = "ZPP"
             Set c = .FindNext(c)
            On Error Resume Next
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With
            On Error GoTo 0
    Worksheets("Storico").Select
    Range("A1").Select
    Application.CutCopyMode = False]
        Range("A1:H" & Ue).Sort Key1:=Range("H1"), Order1:=xlAscending, Key2:= _
        Range("B1"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
        MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _
        DataOption2:=xlSortNormal

E poi qui bisognerebbe fare una strage dei .select :lol:
Codice: Seleziona tutto
    Range("I1").Select
    ActiveCell.FormulaR1C1 = "=(YEAR(RC[-8])-1)*12+MONTH(RC[-8])"
    Range("I1").Select
    Selection.NumberFormat = "General"
    Selection.AutoFill Destination:=Range("I1:I" & Ue)
    Range("J1").Select
    ActiveCell.FormulaR1C1 = "=YEAR(RC[-9])"
    Range("J2").Select
    ActiveCell.FormulaR1C1 = "=IF(YEAR(RC[-9])=YEAR(R[-1]C[-9]),"""",YEAR(RC[-9]))"
    Range("J2").Select
    Selection.AutoFill Destination:=Range("J2:J" & Ue)


Vedi un po' tu...io intento faccio delle prove

Ciao

P.s. ci sono altri due post precedenti questo
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel: problema con Application.ScreenUpdating

Postdi Anthony47 » 24/11/08 16:33

Per il problema iniziale dell' Application.ScreenUpdating io non me lo ritrovo, avendolo simulato con una sequenza come questa:
Codice: Seleziona tutto
Windows("Cartel2").Activate / Sheets("Foglio2").Select / Sheets("Foglio1").Select /  Windows("File1.xls").Activate / Sheets("List").Select /  Windows("Cartel2").Activate / Windows("File1.xls").Activate / Sheets("MkrINFO").Select / Range("F2").Select / Sheets("Personal").Select / Range("D43:I55").Select / Sheets("Master").Select / Range("C2:I18").Select /  Sheets("List").Select / Windows("Cartel2").Activate /  Workbooks.Open Filename:= _
        "C:\Path\90NUM_V-Anth.xls" /  Windows("File1.xls").Activate /  Sheets("List").Select / Windows("Cartel2").Activate /  Windows("V.xls").Activate / Sheets("MkrINFO").Select /    Range("F2").Select / Sheets("Personal").Select / Range("D43:I55").Select / Sheets("Master").Select /  Range("C2:I18").Select / Sheets("List").Select / Windows("90NUM_V-Anth.xls").Activate /    ActiveWorkbook.Close


Lo schermo non lampeggia se preceduto da Application.ScreenUpdating = False; io uso Excel 2002.


Per quanto riguarda le semplificazioni delle macro, confronta la tua prima con questa:

Codice: Seleziona tutto
Workbooks("Flash.xls").Sheets("STORICO").Columns("A:K").ClearContents
Workbooks("ArchivioNDb.xls").Sheets("Quale??????").Columns("A:H").Copy _
    Destination:=Workbooks("Flash.xls").Sheets("STORICO").Range("A1")
Workbooks.Open Filename:="C:\Programmi\ArchivioDb.xls"
Ue = Worksheets(1).Range("B" & Rows.Count).End(xlUp).Row   
Range("A1:H" & Ue).Copy _
   Destination:=Workbooks("Flash.xls").Sheets("STORICO").Range("A1")
Windows("ArchivioDb.xls").Close  savechanges:=False

Collaudare con cautela, perche' ad esempio non ho capito perche' copi due volte su Storico-Range(A:H). E poi ci sono dei "???" che vanno sistemati.

La seconda macro e' meno riducibile, pero' puoi togliere Worksheets("Storico").Select / Range("A1").Select perche' mi pare sei gia' su Storico.

Per la terza, la prima parte la semplifichi in
Codice: Seleziona tutto
Range("I1").FormulaR1C1 = "=(YEAR(RC[-8])-1)*12+MONTH(RC[-8])"
Range("I1").NumberFormat = "General"

Per le istruzioni seguenti fai in modo analogo.

Per il quesito precedente, dici:
Ho messo il punto di interruzione su Sheets("Foglio3").Select quindi comando ancora da eseguire
Ho attivo il Foglio1. lancio la macro che si ferma sul punto di interruzione vado a vedere quale foglio mi sta visualizzando e mi trovo su STORICO è normale?
Poiche la tua macro e'
Codice: Seleziona tutto
Sub Prova()
    Application.ScreenUpdating = False
    Sheets("STORICO").Select
    Application.ScreenUpdating = True
Sheets("Foglio3").Select
End Sub
direi che prima di eseguire Sheets("Foglio3").Select e' normale avere Storico selezionato.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel: problema con Application.ScreenUpdating

Postdi Flash30005 » 24/11/08 20:14

No Anthony c'è qualcosa che non va sul mio comando Application.ScreenUpdating
allora ho una cartella di lavoro con 3 fogli
Foglio1
Storico
Foglio3

ho creato queste due macro proprio per fare il test
Ho il Foglio1 attivo e ho anche aggiunto la select sul medesimo (che non occorre, per il fatto che lancio la macro dal foglio1)
queste sono le due macro per verificare se fa l'udating oppure no
Codice: Seleziona tutto
Sub Prova()
Sheets("Foglio1").Select
    Application.ScreenUpdating = False
    Sheets("STORICO").Select
    Application.ScreenUpdating = True
Call timer
Sheets("Foglio3").Select
End Sub
'----------------------------------
'-------------------------------
Sub timer()
TI = Second(Now())
Rit = 2
Paus:
If Second(Now()) < TI + Rit Then GoTo Paus
MsgBox "Vedo Foglio Storico"
End Sub

ecco cosa accade:
La videata passa subito al foglio Storico (e non dovrebbe visto che ho messo updating = false)
dopo due secondi appare (chiaramente) il messaggio (e ancora visualizzo Foglio Storico)
dopo il messaggio la schermata va giustamente sul foglio3.

Come ti dicevo il problema è sorto da qualche giorno, in quanto ho usato lo stesso programma più volte senza incorrere in questo inconveniente.
E' vero che ho fatto delle modifiche all'interno dello stesso ma capirei se "passasse" per codici "impostati male" ma il file prova.rar inviato e le due macro postate qui (se messe al suo interno) sono la prova che è come se avessi disabilitato alcune funzioni di excel "inavvertitamente" del tipo calcolo manuale che se non si ripristina in automatico rimane manuale.
Ecco! Questo era quello che avrei voluto domandarti:
Sai se si possono verificare condizioni di questo tipo e come ripristinarle.
Ho Office 2003 (senza alcun Sp)
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel: problema con Application.ScreenUpdating

Postdi Anthony47 » 24/11/08 21:51

Benedetto Flash, non metto in dubbio che ci possa essere qualcosa sul tuo Pc, ma la sequenza
Sheets("Foglio1").Select / Application.ScreenUpdating = False / Sheets("STORICO").Select / Application.ScreenUpdating = True / Call timer / Sheets("Foglio3").Select ti visualizza "praticamente subito" il foglio Storico (appena eseguita ScreenUpdating = True) e dopo 2 sec il Foglio3.

Per quello che hai in mente dovresti provare la macro
Codice: Seleziona tutto
Sub Prova()
Sheets("Foglio1").Select
    Application.ScreenUpdating = False
    Sheets("STORICO").Select
Call timer                                        '<<<<<<<< Si vede??
    Application.ScreenUpdating = True
Call timer
Sheets("Foglio3").Select
End Sub
In questo modo dovresti restare 2 secondi su Foglio1, poi vedere Storico, dopo altri 2 secondi passare a Foglio3.
Tieni presente, se non fosse chiaro, che ScreenUpdating=True agisce anche sulla visualizzazione attuale, non solo sui comandi che devi ancora dare.

Tieni anche presente che il break sulla macro annulla lo ScreenUpdating=False, perche' in debug si deve vedere quello che succede.

E poi, non hai macro di evento che possono cambiarti l' impostazione? Altre situazioni che possano forzare ScreenUpdating=True non ne conosco (che non significa "non ce ne sono"!).

Ciao, fai sapere se e come evolve.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel: problema con Application.ScreenUpdating

Postdi Flash30005 » 25/11/08 02:49

Hai ragione ad inquietarti
ho postato male l'esempio ma avevo perso un po' le staffe e ora ti spiego direttamente con il tuo esempio (le prove le ho fatte prima con molti tentativi senza successo).
Lanciando la tua macro-esempio modificata come la posto (non intendo vedere il foglio Storico)
Codice: Seleziona tutto
Sheets("Foglio1").Select
    Application.ScreenUpdating = False
    Sheets("STORICO").Select
'Call timer                                        '<<<<<<<< commentato
Range("A1").Value = "Prova"
Call timer
Sheets("Foglio3").Select
Application.ScreenUpdating = True     '<<<<<< spostato sotto alla select del foglio3- Storico non si dovrebbe visualizzare
End Sub

dal Foglio1
mi andava su Storico
vedevo l'inserimento di Prova
poi messaggio "Vedo Foglio Storico" e dopo l'ok
visualizzavo il Foglio3
quindi il False era stato ignorato
e allora ho cominciato a fare tentativi per "ripristinare lo stato originale" di quel codice perché ero convinto che si era "impostato male" quindi ho provato con Reset (ti prego di non ridere, mi stavo arrampicando sugli specchi) :lol:
Application.ScreenUpdating = Reset e mi dava errore (nell'esecuzione) e anche con Application.ScreenUpdating.Reset
poi ancora con Application.ScreenUpdating.Default (ancora errore nell'esecuzione) e infine (visto che tutti questi comandi scritti in minuscolo li accettava, mettendo automaticamente in maiuscolo il codice, ho fatto un'altro tentativo) con
Application.ScreenUpdating = Default e.... EVVIVA HA FUNZIONATO!
cioè rivedendo la macro precedente
Codice: Seleziona tutto
Sheets("Foglio1").Select
    Application.ScreenUpdating = Default
    Application.ScreenUpdating = False
    Sheets("STORICO").Select
'Call timer                                        '<<<<<<<< commentato
Range("A1").Value = "Prova"
Call timer
Sheets("Foglio3").Select
Application.ScreenUpdating = True     '<<<<<< spostato sotto alla select del foglio3- Storico non si dovrebbe visualizzare
End Sub

dal Foglio1
attesa
...
poi solo il messaggio "Vedo Foglio Storico" e dopo l'ok
vedevo finalmente il Foglio3 senza passare per Storico
Sono andato a vedere su Storico e in A1 c'era il testo Prova
Questa volta il False ha funzionato e ha continuato a funzionare anche commentando il codice Default
Ora non so cosa sia stato a "settare" (per non dire incasinare) Excel (da Access il codice utilizzato come applicazione di Excel funzionava regolarmente) ma di fatto è che non c'è una maschera di ripristino di un settaggio non voluto o almeno una ulteriore voce oltre al True e False che appaiono dopo il segno = di applicazione del codice

Grazie ancora per la pazienza avuta e per avermi chiarito anche il fatto che nel debug si visualizza il foglio che durante lo svolgimento della macro non si sarebbe visto ma per cercare di capire... mi stavo "incartando" da solo

Ciao
P.s. Comunque penso che anche questa esperienza può tornare utile a qualche utente
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel: problema con Application.ScreenUpdating

Postdi Flash30005 » 25/11/08 02:58

Aggiungo,
ora sto facendo un po' di "pulizia" nel programma come mi hai consigliato ma ho alcune voci che non si "compattano" esempio
Codice: Seleziona tutto
    Columns("I:J").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A1").Select
    Application.CutCopyMode = False

Columns("I:J").Copy
mi dà errore
come la potrei migliorare?

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel: problema con Application.ScreenUpdating

Postdi Anthony47 » 25/11/08 14:54

Comincio a pensare che qualcosa non va nel tuo vba.
Eseguendo la tua macro (esattamente la stessa, eccetto il nome dei fogli), vedo correttamente Foglio1 e alla fine Foglio3, senza passare per il foglio intermedio.
Come pure Columns("I:J").Copy e' valida ed eseguita correttamente; che tipo di errore ti da'? lo chiedo senza convizione, nel senso che difficilmente mi si accendera' una luce a spiegare una possibile ragione.

Unica prova: chiama la routine di wait "ttimer" invece di timer, modificando anche le call.

A complicare vieppiu' le cose c' e' il fatto che il problema dello ScreenUpdating ce l' hai su piu' macchine; se non avete fatto tutti insieme un qualche aggiornamento la cosa non so spiegarla.
Prova comunque a reinstallare excel su una macchina e verificare il comportamento.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel: problema con Application.ScreenUpdating

Postdi Flash30005 » 25/11/08 23:32

Si, Anthony è vero che si era "imballato" il vba con quel problema ma ora ho ripristinato lo stato di default che ho postato su (forse sfuggito), infatti adesso funziona bene sui due Pc dove era stato lanciato il programma stesso.

per quel che riguarda invece
mentre Worksheets("STORICO").Columns("I:J").Copy
non funzionate non dipende dal codice .copy così impostato ma dal codice successivo che si aspetta una selezione che ora non c'è
Codice: Seleziona tutto
Worksheets("STORICO").Columns("I:J").Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=Falseche posto per intero


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel: problema con Application.ScreenUpdating

Postdi Anthony47 » 26/11/08 15:40

Si, mi era sfuggito nel lungo post precedente la soluzione al problema ScreenUpdating; soluzione in verita' alquanto strana, poiche' Application.ScreenUpdating = Default equivale a = False (Default e' una variabile non inizializzata, quindi a "0", cioe' False). Ma se funziona e' allora buona...

Per il problema del .Copy e PasteSpecial, userai una sintassi del tipo
Codice: Seleziona tutto
Worksheets("STORICO").Columns("I:J").Copy
Range("Il-tuo-range-di-destinazione").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=Falseche posto per intero

Come range di destinazione basta il suo vertice top-left (I1, nell' esempio)

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel: problema con Application.ScreenUpdating

Postdi ilnonno13 » 13/02/14 10:30

Flash30005 ha scritto:Hai ragione ad inquietarti
ho postato male l'esempio ma avevo perso un po' le staffe e ora ti spiego direttamente con il tuo esempio (le prove le ho fatte prima con molti tentativi senza successo).
Lanciando la tua macro-esempio modificata come la posto (non intendo vedere il foglio Storico)
Codice: Seleziona tutto
Sheets("Foglio1").Select
    Application.ScreenUpdating = False
    Sheets("STORICO").Select
'Call timer                                        '<<<<<<<< commentato
Range("A1").Value = "Prova"
Call timer
Sheets("Foglio3").Select
Application.ScreenUpdating = True     '<<<<<< spostato sotto alla select del foglio3- Storico non si dovrebbe visualizzare
End Sub

dal Foglio1
mi andava su Storico
vedevo l'inserimento di Prova
poi messaggio "Vedo Foglio Storico" e dopo l'ok
visualizzavo il Foglio3
quindi il False era stato ignorato
e allora ho cominciato a fare tentativi per "ripristinare lo stato originale" di quel codice perché ero convinto che si era "impostato male" quindi ho provato con Reset (ti prego di non ridere, mi stavo arrampicando sugli specchi) :lol:
Application.ScreenUpdating = Reset e mi dava errore (nell'esecuzione) e anche con Application.ScreenUpdating.Reset
poi ancora con Application.ScreenUpdating.Default (ancora errore nell'esecuzione) e infine (visto che tutti questi comandi scritti in minuscolo li accettava, mettendo automaticamente in maiuscolo il codice, ho fatto un'altro tentativo) con
Application.ScreenUpdating = Default e.... EVVIVA HA FUNZIONATO!
cioè rivedendo la macro precedente
Codice: Seleziona tutto
Sheets("Foglio1").Select
    Application.ScreenUpdating = Default
    Application.ScreenUpdating = False
    Sheets("STORICO").Select
'Call timer                                        '<<<<<<<< commentato
Range("A1").Value = "Prova"
Call timer
Sheets("Foglio3").Select
Application.ScreenUpdating = True     '<<<<<< spostato sotto alla select del foglio3- Storico non si dovrebbe visualizzare
End Sub

dal Foglio1
attesa
...
poi solo il messaggio "Vedo Foglio Storico" e dopo l'ok
vedevo finalmente il Foglio3 senza passare per Storico
Sono andato a vedere su Storico e in A1 c'era il testo Prova
Questa volta il False ha funzionato e ha continuato a funzionare anche commentando il codice Default
Ora non so cosa sia stato a "settare" (per non dire incasinare) Excel (da Access il codice utilizzato come applicazione di Excel funzionava regolarmente) ma di fatto è che non c'è una maschera di ripristino di un settaggio non voluto o almeno una ulteriore voce oltre al True e False che appaiono dopo il segno = di applicazione del codice

Grazie ancora per la pazienza avuta e per avermi chiarito anche il fatto che nel debug si visualizza il foglio che durante lo svolgimento della macro non si sarebbe visto ma per cercare di capire... mi stavo "incartando" da solo

Ciao
P.s. Comunque penso che anche questa esperienza può tornare utile a qualche utente


Riprendo questa vecchia discussione perché proprio questa mattina ho reavvisato lo stesso problema. Il comando era funzionante fino a ieri - parlo dell' Application.ScreenUpdating = False, questa mattina incredibilmente inserirlo o meno non genera differenze.
Ho provato anche a settare il Default ma il problema non si risolve. Mentre viene eseguita la Macro tutte le operazioni compaiono sullo schermo. Potete aiutarmi?
S.O. W7; Office 2007
ilnonno13
Utente Junior
 
Post: 22
Iscritto il: 22/11/13 11:48

Re: Excel: problema con Application.ScreenUpdating

Postdi ilnonno13 » 13/02/14 12:25

Risolto. Avevo maldestramente scritto una cosa male nel codice.
S.O. W7; Office 2007
ilnonno13
Utente Junior
 
Post: 22
Iscritto il: 22/11/13 11:48

Re: Excel: problema con Application.ScreenUpdating

Postdi Flash30005 » 14/02/14 02:28

ilnonno13 ha scritto:Risolto. Avevo maldestramente scritto una cosa male nel codice.


Quale?
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-


Torna a Applicazioni Office Windows


Topic correlati a "Excel: problema con Application.ScreenUpdating":

Problema Windows 10
Autore: asso1998
Forum: Software Windows
Risposte: 1

Chi c’è in linea

Visitano il forum: Nessuno e 9 ospiti