Condividi tramite

Sfarfallio, non riesco ad evitarlo con la macro inserita all'interno di un foglio

Anonimo
2010-10-21T06:46:22+00:00

Buongiorno a tutti i mattinieri!!

Ho questa macro inserita direttamente all'interno di un foglio di lavoro e non in un modulo!

Funziona perfettamente ma non riesco, pur avendo inserito l'istruzione, ad evitare lo sfarfallio del video durante l'esecuzione della stessa.

Ho provato a posizionare

Application.ScreenUpdating = False

in diverse posizioni ma niente, continua a sfarfallare.

Quindi dopo diversi tentativi, chiedo aiuto ai nostri Oracoli del VBA!

Grazie e buona giornata

Andrea 

Private Sub Worksheet_Change(ByVal Target As Range)

'permette di trasformare le formule in valori

With Target

        If .Column = 32 Then

    Application.ScreenUpdating = False

            Cells(.Row, 3).Value = Cells(.Row, 3).Value

            Cells(.Row, 5).Value = Cells(.Row, 5).Value

            Cells(.Row, 24).Value = Cells(.Row, 24).Value

            Cells(.Row, 25).Value = Cells(.Row, 25).Value

            Cells(.Row, 26).Value = Cells(.Row, 26).Value

            Cells(.Row, 27).Value = Cells(.Row, 27).Value

            Cells(.Row, 28).Value = Cells(.Row, 28).Value

            Cells(.Row, 29).Value = Cells(.Row, 29).Value

            'Cells(.Row, 36).Value = Cells(.Row, 36).Value

            'Cells(.Row, 38).Value = Cells(.Row, 38).Value

            'Cells(.Row, 40).Value = Cells(.Row, 40).Value

            'Cells(.Row, 41).Value = Cells(.Row, 41).Value

            Cells(.Row, 42).Value = Cells(.Row, 42).Value

            Cells(.Row, 43).Value = Cells(.Row, 43).Value

            Cells(.Row, 45).Value = Cells(.Row, 45).Value

    End If

End With

On Error Resume Next

'Application.ScreenUpdating = True

End Sub

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
2010-10-25T08:42:41+00:00

Buongiorno Mauro, perfetto! ho risolto ancora una volta grazie al tuo aiuto!Riassumo il modulo corretto, da inserire all'interno del foglio di lavoro:

Private Sub Worksheet_Change(ByVal Target As Range)

    Application.ScreenUpdating = False

   

    With Target

    If Target.Column = 4 Then

        Call m(.row)

        End If

    End With

End Sub

Private Sub m(byval lng as long)

    ' Dim lng As Long

       

       Cells(lng.Row, 3).Value = Cells(lng.Row, 3).Value

       Cells(lng.Row, 3).Value = Cells(lng.Row, 3).Value

   

End Sub

Grazie e buona giornata

 

 

Riassumo io, il tuo non è corretto:

Private Sub Worksheet_Change(ByVal Target As Range)

    Application.ScreenUpdating = False

    With Target

    If Target.Column = 4 Then

        Call m(.row)

        End If

    End With

End Sub

Private Sub m(byval lng as long)

    ' Dim lng As Long

       Cells(lng, 3).Value = Cells(lng, 3).Value

       Cells(lng, 3).Value = Cells(lng, 3).Value

End Sub


--

La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

--

Mauro Gamberini - Microsoft© MVP(Excel)

http://www.maurogsc.eu/

La risposta è stata utile?

0 commenti Nessun commento

13 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2010-10-21T07:42:46+00:00

    Si sono io che scrivo nella cella della colonna 32; appena sposto il cursone inizia l'operazione di sfarfallio, che dura poco, ma si vede!

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2010-10-21T07:36:31+00:00

    Per sfarfallio intendo che ogni volta che applica il

    ad esempio

    Cells(.Row, 3).Value = Cells(.Row, 3).Value

    sul monitor si vede che compie la macro, insomma lo sfarfallio classico di qualsiasi macro un pò "corposa" al quale non si applica lo scrrenUpdating=false

    Tieni conto che il codice è all'interno di un foglio di lavoro che contiene circa 8000 righe con 60 colonne di dati!

    Forse è per quello?

    Come viene richiamato l'evento Change? Se sei tu che scrivi in una cella della colonna 32, non dovresti vedere lo sfarfallio.

    NOTA. Per favore non andare a capo più volte alla fine di ogni paragrafo. Grazie.


    --

    La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

    --

    Mauro Gamberini - Microsoft© MVP(Excel)

    http://www.maurogsc.eu/

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2010-10-21T07:12:41+00:00

    Per sfarfallio intendo che ogni volta che applica il 

    ad esempio

    Cells(.Row, 3).Value = Cells(.Row, 3).Value

    sul monitor si vede che compie la macro, insomma lo sfarfallio classico di qualsiasi macro un pò "corposa" al quale non si applica lo scrrenUpdating=false

    Tieni conto che il codice è all'interno di un foglio di lavoro che contiene circa 8000 righe con 60 colonne di dati!

    Forse è per quello?

    Merci

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2010-10-21T06:58:43+00:00

    Buongiorno a tutti i mattinieri!!

    Ho questa macro inserita direttamente all'interno di un foglio di lavoro e non in un modulo!

    Funziona perfettamente ma non riesco, pur avendo inserito l'istruzione, ad evitare lo sfarfallio del video durante l'esecuzione della stessa.

    Ho provato a posizionare

    Application.ScreenUpdating = False

    in diverse posizioni ma niente, continua a sfarfallare.

     

    Definisci sfarfallio, per favore. Io non vedo che sfarfalli utilizzando il codice postato. Grazie.


    --

    La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

    --

    Mauro Gamberini - Microsoft© MVP(Excel)

    http://www.maurogsc.eu/

    La risposta è stata utile?

    0 commenti Nessun commento