VBA copia da



  • VBA copia da....
    di MARCO (utente non iscritto) data: 12/12/2014 13:43:49

    Buongiorno a tutti

    Come faccio in vba a dare il comando di copiare le celle A10:C18 del foglio precedente nel foglio attuale?

    E del foglio successivo nell'attuale?

    Grazie



  • di Lucas87 data: 12/12/2014 14:05:09

    Ciao
    Prova così
     
    Sub precedente()
    If ActiveSheet.Index <> 1 Then
        n = ActiveSheet.Index
        Range("a10:c18") = Sheets(n - 1).Range("a10:c18").Value
    End If
    End Sub
    
    
    Sub successivo()
    If ActiveSheet.Index <> Sheets.Count Then
        n = ActiveSheet.Index
        Range("a10:c18") = Sheets(n + 1).Range("a10:c18").Value
    End If
    End Sub
    



  • di MARCO (utente non iscritto) data: 12/12/2014 14:11:55

    Avevo già provato questa soluzione e mi da un problema...

    Le celle che mi deve copiare contengono formule... Facendo in quel modo, mi copia il risultato della formula ma non la formula



  • di Lucas87 data: 12/12/2014 14:32:53

    Così?
     
    Sub precedente()
    If ActiveSheet.Index <> 1 Then
        Application.ScreenUpdating = False
        Application.CutCopyMode = False
        n = ActiveSheet.Index
        Sheets(n - 1).Range("a10:c18").Copy
        Sheets(n).Range("a10:c18").PasteSpecial Paste:=xlPasteFormulas
        Range("a10").Select
        Application.ScreenUpdating = True
        Application.CutCopyMode = True
    End If
    End Sub
    
    Sub successivo()
    If ActiveSheet.Index <> Sheets.Count Then
        Application.ScreenUpdating = False
        Application.CutCopyMode = False
        n = ActiveSheet.Index
        Sheets(n + 1).Range("a10:c18").Copy
        Sheets(n).Range("a10:c18").PasteSpecial Paste:=xlPasteFormulas
        Range("a10").Select
        Application.ScreenUpdating = True
        Application.CutCopyMode = True
    End If
    End Sub
    



  • di MARCO (utente non iscritto) data: 12/12/2014 15:20:32

    Non so dove e comedecifrare e capire le formule che mi hai fatto scrivere... Mah... Ora va alla perfezione!!!

    Grazie mille



  • di Lucas87 data: 12/12/2014 15:49:39

    Ho aggiunto le spiegazioni
     
    Sub precedente()
    If ActiveSheet.Index <> 1 Then  'controlla l'indice del foglio. Se è il primo, non esiste un foglio precedente
        Application.ScreenUpdating = False  'non aggiorna lo schermo e non mostra le operazioni
        Application.CutCopyMode = False     'non mostra il bordo tratteggiato quando si fa copia/incolla
        n = ActiveSheet.Index       'indice del foglio di partenza
        Sheets(n - 1).Range("a10:c18").Copy     'copia l'intervallo del foglio precedente
        Range("a10:c18").PasteSpecial Paste:=xlPasteFormulas  'incolla solo le formule ful foglio di partenza
        Range("a10").Select     'seleziona la cella A10 del foglio di partenza
        Application.ScreenUpdating = True   'attiva l'aggiornamento dello schermo
        Application.CutCopyMode = True      'attiva il bordo tratteggiato del copi/incolla
    End If
    End Sub
    
    Sub successivo()
    If ActiveSheet.Index <> Sheets.Count Then   'controlla l'indice del foglio. Se è l'ultimo, non esiste un foglio successivo
        Application.ScreenUpdating = False
        Application.CutCopyMode = False
        n = ActiveSheet.Index
        Sheets(n + 1).Range("a10:c18").Copy
        Range("a10:c18").PasteSpecial Paste:=xlPasteFormulas
        Range("a10").Select
        Application.ScreenUpdating = True
        Application.CutCopyMode = True
    End If
    End Sub
    



  • di MARCO (utente non iscritto) data: 12/12/2014 15:55:28

    Grazie con tutto il cuore

    Fantastico!!!!!