Sviluppare funzionalita su Microsoft Office con VBA Cartella Excel lenta in apertura

Login Registrati
Stai vedendo 6 articoli - dal 1 a 6 (di 6 totali)
  • Autore
    Articoli
  • #5842 Risposta

    joanin

      Buongiorno,

      ho un file excel, con tabella pivot e alcune macro, che è lentissimo ad aprirsi.

      Per qualche minuto resta il logo di Excel con la scritta "Calcolo in corso (8 thread)..."

      Potrebbe essere che il problema sia dovuto a questa macro che serve per eliminare alcune righe in un foglio di lavoro. La macro scorre anche 5000 righe.

      ' macro per elimiare righe che iniziano per numeri
          
          Dim LR3 As Long, i3 As Long
      
      With Sheets("Import")
          LR3 = .Range("A" & .Rows.Count).End(xlUp).Row
      
          For i3 = LR3 To 2 Step -1
              If IsNumeric(.Range("A" & i3).Value) = False And _
              Len(.Range("A" & i3).Value) > 0 Then
      
              Else
                  .Rows(i3).Delete
              End If
          Next i3
      End With

      Che sia dovuto a questa macro? Come risolvere? Grazie.

      #5843 Risposta
      patel
      patel
      Moderatore
        5 pts

        la macro viene lanciata automaticamente all'apertura ? se sì toglila dalla Sub Workbook_Open()

        #5844 Risposta

        joanin

          Ciao patel. In pratica nel Sub Workbook_Open() richiamo alcune macro, tra cui una macro che al suo interno richiama la macro in questione. 

          Quindi  in Sub Workbook_Open() richiamo Macro 1; all'interno di Sub Macro 1() richiamo Macro 2 e all'interno del codice di Sub Macro 2 ho il pezzo di codice allegato prima.

          #5845 Risposta

          joanin

            Fammi sapere come procedere!

            #5846 Risposta

            Joanin

              Di sicuro è quella macro, perchè cancellandola (commentandola) il foglio Excel si apre immediatamente

              #5897 Risposta

              vion
              Partecipante
                3 pts

                Per cancellare le righe più velocemente:

                  Dim LR3 As Long, i3 As Long
                  Dim data As Variant
                    Dim rangeToDelete As Range
                
                    With Sheets("Import")
                        LR3 = .Range("A" & .Rows.Count).End(xlUp).Row
                        data = .Range("A2:A" & LR3).Value
                    
                        For i3 = LBound(data) To UBound(data)
                            If Not IsNumeric(data(i3, 1)) And _
                            Len(data(i3, 1)) <> 0 Then
                    
                    
                            Else
                                If rangeToDelete Is Nothing Then
                                    Set rangeToDelete = .Range("A" & i3 + 1)
                                Else
                                    Set rangeToDelete = Union(rangeToDelete, .Range("A" & i3 + 1))
                                End If
                            End If
                        Next i3
                    End With
                    If Not rangeToDelete Is Nothing Then rangeToDelete.EntireRow.Delete
              Login Registrati
              Stai vedendo 6 articoli - dal 1 a 6 (di 6 totali)
              Rispondi a: Cartella Excel lenta in apertura
              Gli allegati sono permessi solo ad utenti REGISTRATI
              Le tue informazioni:



              albatros54
              albatros54 - 442 risposte

              vecchio frac - 350 risposte

              patel
              patel - 257 risposte

              Marius44
              Marius44 - 256 risposte

              Luca73
              Luca73 - 180 risposte