Excel e gli applicativi Microsoft Office Problema con funzione "ClearContents"

Login Registrati
Stai vedendo 5 articoli - dal 1 a 5 (di 5 totali)
  • Autore
    Articoli
  • #11393 Score: 0 | Risposta

    kipudda

      Buongiorno,

       

      sull'editor di VBA ho inserito la seguente routine per azzerare i valori riportati nelle celle sbloccate presenti nel foglio, senza dover ripetere il comando per ogni singola cella:

      Dim zona As Range
      Set zona = Range("A8:R103")
          For Each cl In zona
          If cl.Locked = False Then cl.ClearContents

      L'istruzione funziona, però mi sono accorto che quando lascio aperti più file Excel e attivo la routine, Excel impiega molto più tempo a concludere l'operazione, immagino perché va a leggere anche i dati presenti negli altri fogli di lavoro (anche se comunque, alla fine, "ripulisce" solo i valori presenti nel foglio di lavoro principale).

      C'è un modo per ovviare a tale inconveniente, in modo da ridurre il tempo di lavorazione richiesto dalla routine? La soluzione più semplice sarebbe quella di chiudere gli altri file ma vorrei sapere se esista un modo per correggere la routine su VBA senza dovermi così ricordare di chiudere gli altri file....... grazie mille!!

       

       

       

      #11396 Score: 0 | Risposta

      vecchio frac
      Senior Moderator
        247 pts

        Io proverei a disattivare il ricalcolo automatico, riabilitandolo alla fine della routine.

        Inoltre per velocizzare la cancellazione, non farei il ciclo sulle celle sprotette del range: farei una sprotezione del foglio al volo, una cancellazione della zona (qualificata per esteso, per evitare di incidere su zone non pertinenti), e applicherei nuovamente la protezione.

        Sub test()
            Application.Calculation = xlCalculationManual
            With Workbooks("cartel2").Sheets("Foglio1")
                .Unprotect
                .Range("A8:R103").ClearContents
                .Protect
            End With
            Application.Calculation = xlCalculationAutomatic
        End Sub
        #11403 Score: 0 | Risposta

        kipudda

          Grazie mille per il suggerimento!

          però ho un dubbio: siccome nel mio intervallo di riferimento - Range("A8:R103") - ho sia celle sbloccate (da ripulire) che celle bloccate (da non modificare), seguendo la tua routine non rischio di cancellare tutto?

          #11424 Score: 0 | Risposta

          kipudda

            Ho provato adesso a disabilitare esclusivamente il ricalcolo automatico (lasciando inalterata l'altra parte della funzione); la routine adesso è velocissima! Grazie mille per il suggerimento, vecchio frac!

             

            #11448 Score: 0 | Risposta

            vecchio frac
            Senior Moderator
              247 pts

              ha scritto:

              seguendo la tua routine non rischio di cancellare tutto?

              E certamente, quindi non utilizzare quel suggerimento 🙂

            Login Registrati
            Stai vedendo 5 articoli - dal 1 a 5 (di 5 totali)
            Rispondi a: Problema con funzione "ClearContents"
            Gli allegati sono permessi solo ad utenti REGISTRATI
            Le tue informazioni: