Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

EXCEL Perchè a volte Application.ScreenUpdating = False non

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 Perchè a volte Application.ScreenUpdating = False non

Postdi Francesco53 » 17/05/12 13:46

Buongiorno a tutti,
ho creato un nuovo foglio contenete la stessa macro rispetto all'originale, la macro contiene
il comando: Application.ScreenUpdating = False.
Nel foglio originale blocca lo schermo su foglio1, mentre elabora e cerca dei dati su Foglio2
per poi tornare a foglio1.
Nel nuovo foglio contenete la stessa macro, il comando non agisce e quindi vedo nello schermo
i passaggi da Foglio 1 a Foglio2 e poi il ritorno a Foglio1 da Foglio2.
Perchè succede tutto questo? Non agisce "Application.ScreenUpdating = False" pur essendo
uguale la macro?
Grazie
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Sponsor
 

Re: EXCEL Perchè a volte Application.ScreenUpdating = False

Postdi ricky53 » 17/05/12 14:09

Ciao,
puoi inviare il codice che ti genera il problema, meglio se invii più istruzioni possibili ... se la macro non è grande inviala tutta !
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: EXCEL Perchè a volte Application.ScreenUpdating = False

Postdi Flash30005 » 17/05/12 15:42

Prova ad inserire nella prima routine (dove hai Application.ScreenUpdating = false)
queste due riga prima del tuo false
Codice: Seleziona tutto
Application.ScreenUpdating = Default  '<<<<<<<<< aggiungere
Application.ScreenUpdating = True  '<<<<<<<<< aggiungere
Application.ScreenUpdating = False    '<<<<<<<<<< tua riga codice


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 Perchè a volte Application.ScreenUpdating = False

Postdi Francesco53 » 17/05/12 15:45

Ciao Ricky,
ti posto la macro che utilizzo, ripeto in vecchio foglio funziona, nel nuovo mi cambia
la visione dal foglio1 al foglio2 che vorrei evitare.
Questa è la macro:
Codice: Seleziona tutto
Sub Ricerca()
Application.ScreenUpdating = False
Application.Calculation = xlManual
Cells(4, 28) = Cells(4, 11)
Cells(4, 30) = Cells(7, 4)
Cells(4, 6) = Cells(3, 6)
Cells(3, 28) = Cells(7, 2)
Worksheets("Foglio2").Select 'qui cambia visione foglio
F = Cells(1, 26)
FT = Cells(1, 1)
Range(Cells(3, 28), Cells(4000, 52)).Select
Selection.Clear
Worksheets("Foglio1").Select
V = Cells(4, 38)
Worksheets("Foglio2").Select
Cells(1, 31) = V
For X = 1 To FT - F
For Y = 5 To 24
If Cells(X + 1, Y) = V Then
Cells(X + 1, 28) = 1
End If
Next
Next
Worksheets("Foglio1").Select
Range("A1").Select
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub


Grazie
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Re: EXCEL Perchè a volte Application.ScreenUpdating = False

Postdi Francesco53 » 17/05/12 15:53

Grazie Flash, letto adesso mentre scrivevo a Ricky.
Provato tue indicazioni ma purtroppo continua il cambio di quadro da foglio1 a foglio2.
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Re: EXCEL Perchè a volte Application.ScreenUpdating = False

Postdi Flash30005 » 17/05/12 16:18

tempo fa ho risolto in quella maniera.

Ma fammi capire esegui la macro normalmente o in debug?

Hai altri codici nel vba del foglio?
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 Perchè a volte Application.ScreenUpdating = False

Postdi ricky53 » 17/05/12 16:26

Ciao,
prima leggi quanto ti ha scritto Flash.

Premesso che non sono entrato nei meriti del codice ho solo fatto modifiche.

Prova questo codice (è il tuo al quale ho messo, davanti ogni istruzione "Cells" o "Range" i riferimenti al foglio di appartenenza).
Alcune istruzioni le ho modificate, altre aggiunte ed altre commentate (non vengono eseguite) poi tu le cancellerai.

Troverai i commenti nel codice
Codice: Seleziona tutto
Sub Ricerca()
    Application.ScreenUpdating = False
    Application.Calculation = xlManual
'.................................................... AGGIUNTE
    Dim Ws1 As Worksheet, Ws2 As Worksheet
    Set Ws1 = Worksheets("Foglio1")
    Set Ws2 = Worksheets("Foglio2")
'.................................................... AGGIUNTE
   
    Ws1.Cells(4, 28) = Ws1.Cells(4, 11)
    Ws1.Cells(4, 30) = Ws1.Cells(7, 4)
    Ws1.Cells(4, 6) = Ws1.Cells(3, 6)
    Ws1.Cells(3, 28) = Ws1.Cells(7, 2)
'    Worksheets("Foglio2").Select 'qui cambia visione foglio <<-------------- Cancellare
    F = Ws2.Cells(1, 26)
    FT = Ws2.Cells(1, 1)
    Ws2.Range(Ws2.Cells(3, 28), Ws2.Cells(4000, 52)).Clear
'    Selection.Clear
'    Worksheets("Foglio1").Select <<-------------- Cancellare
    V = Ws1.Cells(4, 38)
'    Worksheets("Foglio2").Select <<-------------- Cancellare
    Ws2.Cells(1, 31) = V
    For X = 1 To FT - F
        For Y = 5 To 24
            If Ws2.Cells(X + 1, Y) = V Then
                Ws2.Cells(X + 1, 28) = 1
            End If
        Next
    Next
'    Worksheets("Foglio1").Select <<-------------- Cancellare
    Ws1.Range("A1").Select
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True

    Set Ws1 = Nothing
    Set Ws2 = Nothing
End Sub


CONTROLLA BENE che io abbia scritto:
Ws1 dove i dati erano relativi al Foglio1
e
Ws2 dove i dati erano relativi al Foglio2
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: EXCEL Perchè a volte Application.ScreenUpdating = False

Postdi Zer0Kelvin » 17/05/12 16:59

Salve.
Non è che per caso in uno dei fogli coinvolti è stato inserito un gestore di eventi (SelectionChange, Change, Activate ...) che ripristina a True il valore di ScreenUpdating?
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 303
Iscritto il: 08/04/12 11:23

Re: EXCEL Perchè a volte Application.ScreenUpdating = False

Postdi Francesco53 » 17/05/12 21:08

Grazie a tutti, adesso passo alle risposte:
X Ricky:
ho apportato le modifiche indicate ed ho visto che non si sposta dal Foglio iniziale,
X Flash:
eseguita la macro originale sia normalmente che in Debug e si sposta tra i fogli.
Nelle tue indicazioni manca il riferimento su come avevi risolto tempo fa,
nel foglio non sono presenti altri codici.
X Zer0Kelvin: non sono presenti gestori di eventi.
Vi ringrazio di cuore per tutti i vostri interventi, avrei da chiedere (la mia grande curiosità)
come mai nel file originale è tutto OK, mentre nel foglio ricreato, con la stessa macro mi
crea la difficoltà? devo ricreare le mie macro con l'aggiunte scritte da Richy o è un caso
particolare?
tengo a precisare che creo sempre come avete visto le macro, e mai mi succedeva che il
comando ScreenUpdating non avesse effetto.
Attendo eventuali vs valutazioni e nuovamente grazie.
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Re: EXCEL Perchè a volte Application.ScreenUpdating = False

Postdi Francesco53 » 17/05/12 21:10

X Flash,
scusa rileggendo ho capito che ti riferivi a quanto avevo già provato come da te consigliato.
Codice: Seleziona tutto
    Application.ScreenUpdating = Default  '<<<<<<<<< aggiungere
    Application.ScreenUpdating = True  '<<<<<<<<< aggiungere
    Application.ScreenUpdating = False    '<<<<<<<<<< tua riga codice

Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Re: EXCEL Perchè a volte Application.ScreenUpdating = False

Postdi ricky53 » 17/05/12 23:25

Ciao,
per capire cosa è successo al tuo file occorre averlo.
Puoi inviarlo senza, ovviamente, dati riservati.

Comunque il modo corretto di fare operazioni sulle celle è quello che ti ho indicato io: è necessario fare sempre riferimento ai fogli cui le celle movimentate appartengono.

Non è occorre ricreare nulla basta fare, alla tua macro, le modifiche che ti ho indicato io.
Se la macro che hai inviato è proprio quella che utilizzi allora sostituiscila con quella che ti ho inviato io è cancella le istruzioni seguendo quanto scritto nella macro.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: EXCEL Perchè a volte Application.ScreenUpdating = False

Postdi Flash30005 » 18/05/12 02:01

Leggi su...

Si, avevo risolto con un ripristino dello screenupdating non ricordo bene l'ordine delle due righe iniziali
Fu un caso su una macro dove lo screen (false/true) veniva richiamato più volte

Prova anche così
Codice: Seleziona tutto
    Application.ScreenUpdating = True  '<<<<<<<<< Spostare qui
    Application.ScreenUpdating = Default  '<<<<<<<<< Spostare qui
    Application.ScreenUpdating = False    '<<<<<<<<<< tua riga codice


Poi, anche togliendo la "strana" riga di default tornò tutto a posto e non si è più verificato :roll:

Fai attenzione, In debug vedrai sempre lo spostamento da un foglio all'altro (altrimenti che debug sarebbe?)

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 Perchè a volte Application.ScreenUpdating = False

Postdi Francesco53 » 18/05/12 09:37

Ringrazio tutti per l'attenzione e le risposte date.
La mia sensazione e che a volte, specie la vers. 2007, vada un pò per i fatti suoi.
Comunque con le indicazioni da voi date ho superato la difficoltà.
X Ricky:
La macro completa prevedeva solo un richiamo ad altra macro con il Call,
dopo il ciclo For...Next, ma, avendola remmata e quindi esclusa, non credo
potesse influire sulla macro di base, quella postata.

Grazie a tutti
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45


Torna a Applicazioni Office Windows


Topic correlati a "EXCEL Perchè a volte Application.ScreenUpdating = False non":


Chi c’è in linea

Visitano il forum: Nessuno e 16 ospiti