lentezza



  • lentezza
    di dody (utente non iscritto) data: 15/09/2014 14:11:28

    Ciao a tutti , il problema e il seguente ho adattato la seguente macro alle mie esigenze e funziona bene ma dato che ho la necessità di creare " o copiare fate voi " più di 200 fogli diventa di una lentezza mostruosa qualcuno sa indicarmi un metodo per velocizzarla ???


    Grazie
     
     Sub CopiaFoglio()
    Rispo = InputBox("Registra Nome")
    If Rispo <> "" Then
    Sheets("Pippo").Copy Before:=Sheets(Sheets.Count)
    ActiveSheet.Name = Rispo
     For i = 1 To Sheets.Count
        Sheets(i).Cells(1, 1) = Sheets(i).Name
        Selection.Font.Bold = True
    ActiveSheet.Range("D3:G33").ClearContents
    ActiveSheet.Range("D3").Select
    Next i
    
    End If
    
    End Sub
    



  • di Lucas87 data: 15/09/2014 14:50:21

    Ciao
    Se ho capito bene il tuo codice aggiunge un foglio, cambia nome al nuovo foglio, per ogni foglio imposta il grassetto e scrive il nome del foglio in A1, cancella il contenuto di D3:G33 e seleziona D3 nel nuovo foglio.

    Il senso del ciclo for non riesco a comprenderlo. Perchè farlo su tutti i fogli?
    Perchè selezioni la cella D3?
    metti
    application.screenupdating=false
    all'inizio del codice
    e
    application.screenupdating=true
    alla fine



  • di Dody (utente non iscritto) data: 15/09/2014 15:28:03

    D3 è la cella in cui vado poi a scrivere nuovi dati , cosa intendi a riguardo del ciclo for ??? così com'è scritta ripassa tutti i fogli ? quindi può essere anche che rallenta quando ci sono tanti fogli??




  • di Lucas87 data: 15/09/2014 16:08:19

    Il codice sotto PER OGNI FOGLIO:
    scrive in A1 il nome del foglio
    imposta il grassetto in A1
    cancella il contenuto dell'intervallo D3:G33 del foglio attivo
    seleziona D3 del foglio attivo

    il foglio attivo è quello appena creato.
    Quindi si, se hai tanti fogli (200 sono tantissimi) questo rallenta parecchio.
     
    For i = 1 To Sheets.Count
        Sheets(i).Cells(1, 1) = Sheets(i).Name
        Selection.Font.Bold = True
        ActiveSheet.Range("D3:G33").ClearContents
        ActiveSheet.Range("D3").Select
    Next i



  • di dody (utente non iscritto) data: 15/09/2014 16:39:34

    Grazie recepito il messaggio provvederò