Purtoppo non puoi selezionare e copiare range non contigui; devi pertanto elaborare una soluzione su misura.
Vista l' estrema aleatorieta' di quello che devi fare suggerisco questo processo:
1) Inserisci questo codice, in questo ordine, in un Modulo dell' editor del vba
- Codice: Seleziona tutto
Dim MRA As String
Dim StSh As String
Sub MRLearn()
If MRA = "" Then
MRA = Selection.Address
Else: MRA = MRA & "," & Selection.Address: Beep
End If
StSh = ActiveSheet.Name
End Sub
Sub CopiaMR()
For Each Cella In Sheets(StSh).Range(MRA)
'bbb = Cella.Value
Selection.Offset(0, I).Value = Cella.Value: I = I + 1
Next Cella
MRA = ""
End Sub
Sub Azzera()
MRA = ""
End Sub
Si tratta di 3 macro diverse.
2) Assegna alla macro MRALearn il tasto di scelta breve Contr-Maiusc-I (I come Impara); poi Contr-Maiusc-c (come Copia) a CopiaMR, e Contr-Maiusc-a (come Azzera) ad Azzera.
Per fare questo: Menu /Strumenti /Macro /Macro; selezioni la macro che ti interessa, premi Opzioni, scrivi la lettera prescelta, Ok; chiudi la finestra Macro con la X.
Uso:
- Sul foglio di origine, selezioni un' area contigua poi premi Contr-Maiusc-I; ripeti per ogni area che vorrai copiare.
- Vai sul foglio di destinazione, nella cella in cui vuoi incollare, premi Contr-Maiusc-C: ogni cella delle aree precedentemente selezionate verranno copiate
nella cella selezionata e quelle adiacenti alla sua destra.
- NON viene fatto nessun controllo se le celle sono piene o vuote prima di sovrascrivere.
- La copia puo' essere ripetuta in altri fogli di destinazione.
- Finite le operazioni bisogna azzerare l' elenco tramite Contr-Maiusc-A, per evitare che al prossimo "Impara" le nuove celle vengano aggiunte a quelle esistenti; la macro "Impara" fara' un beep se l' elenco in cui si scrive non e' vuoto.
Prova e fai sapere se fa quello che chiedevi; se No, spiega ancora.
Come sempre, prima di provare fai due copie di backup del tuo file.
Ciao.