You are here:Home-Domande su Excel VBA e MACRO-velocizzare una macro
velocizzare una macro2020-06-08T12:44:38+02:00

Home Forum Domande su Excel VBA e MACRO velocizzare una macro

Visualizzazione 4 filoni di risposte
  • Autore
    Post
    • AvatarMisterExcel
      Partecipante
        Post totali: 26

        Buongiorno

        Con questo codice

        Sub Inserisci()

        Dim q As Integer

        For q = 1 To 366

        Range(“G1:G366”).Value = Range(“F1:F366”).Value

        Range(“L2”).Value = Range(“L1”).Value

        If Range(“G” & q).Value = Range(“L2”).Value Then

        Application.ScreenUpdating = False

        Range(“M1”).Value = Range(“H” & q)

        Exit For

        Else

        Range(“M1”).Value = 1

        Application.ScreenUpdating = True

        End If

        Next

        End Sub

        controllo se nella colonna G c’è il valore della cella L2. Se lo trova, deve scrivere nella cella M1 il corrispondente valore della colonna H.

        La macro funziona, però sembra che il tempo di attesa sia troppo lungo. C’è un modo per velocizzare la macro?

        Grazie!

         

      • BySalvBySalv
        Amministratore del forum
          Post totali: 720

          Ciao MisterExcel, velocizzare una macro si può ma si ha bisogno del file, per vedere cosa provoca il rallentamento.

          la velocità della macro a volte può dipendere dalla macro stessa altre volte no, ed è la maggior parte.

          vuoi perche ci sono troppo formule, oppure formule matriciali, caricamento di immagini, collegamenti ad altri file, troppe celle impegnate che non servono, le problematiche sono diverse.

          si potrebbe in prima fase bloccare l’aggiornamento delle formule, far lavorare la macro con le matrici in memoria ed in ultimo scrivere sul foglio, bloccare gli eventi del foglio.

          come vedi ci sono molte soluzioni, ma quale sia quella giusta, cosi solo con la macro non posso dirtelo.

          Ciao By Sal (8-D

          Ciao By Sal (8-)
          se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

        • BySalvBySalv
          Amministratore del forum
            Post totali: 720

            Ciao, Non posso fare niente, il file non è completo, anche perche forse per la Privacy non l’hai potuto inserire.
            ma putroppo in queste condizioni non posso fare molto, ho inserito la tua macro ma come potrai vedere fa riferimento a celle attualmente vuote.

            inoltre ho notato una cosa, il tuo file ha la versione 97-2003 di excel ed allora la funzione “Aggrega()” per evitare formule matriciali non era disponibile, che non sia quella che ti fa rallentare l’esecuzione della macro.

            Ciao By Sal (8-D

            ecco il file con la macro vedi come funziona, non si nota nessun rallentamento
            http://www.filedropper.com/prova_5

            Ciao By Sal (8-)
            se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

          • AvatarMisterExcel
            Partecipante
              Post totali: 26

              Ciao By Sal

              Ho risolto cambiando il codice in questo modo:

              Sub Inserisci()

              Dim ur As Integer

              Range(“G1:G366”).Value = Range(“F1:F366”).Value

              Range(“L2”).Value = Range(“L1”).Value

               

              With Sheets(“Foglio3”)

              ur = .Cells(Rows.Count, 7).End(xlUp).Row

              For n = ur To 1 Step -1

              If .Cells(n, 7).Value = Range(“L2”) Then

              Range(“M1”) = .Cells(n, 8).Value

              End If

              Next n

              End With

              End Sub

               

              E’ velocissima. Direi che possiamo considerare risolto il problema.

              Grazie e alla prossima

            • BySalvBySalv
              Amministratore del forum
                Post totali: 720

                Ok, meglio cosi

                Ciao alla prossima (8-D

                Ciao By Sal (8-)
                se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

            Visualizzazione 4 filoni di risposte
            • Devi essere connesso per rispondere a questo topic.