2009-07-28 8 views
0

J'essaie d'écrire du code VBA qui va sélectionner une plage nommée, la copier et la coller pour un certain nombre de lignes. Ce que je dois savoir, c'est comment sélectionner la gamme de cellules correspondant à celles ci-dessus.Décalage de plage nommé VBA

E.g. J'ai une gamme "myRange" qui se réfère à: "= $ A $ 1: D $ 1 $, $ F $ 1, $ K $ 1". Je veux copier ceci et le coller dans "= $ A $ 2: D $ 2 $, $ F $ 2, $ K $ 2" en se référant à "myRange" au lieu de la chaîne de références de cellules.

Une aide?

Répondre

1

Quelque chose comme ça?

Sub Test() 

    Dim oRange As Range 
    Set oRange = ActiveSheet.Range("A1:D1") ' Change this to point at the range to be copied 

    Dim i As Integer 
    For i = 1 To 10 
     oRange.Copy 
     oRange.Offset(i, 0).PasteSpecial xlPasteAll 
    Next i 

End Sub 

EDIT: OK, quelque chose comme ça alors (pour faire face à des plages disjoints):

Sub Test() 

    Dim oRange As Range 
    Set oRange = ActiveSheet.Range("A1,C1:D1") ' Change this to point at the range to be copied 

    Dim i As Integer 
    For i = 1 To 10 
     Dim oArea As Range 
     For Each oArea In oRange.Areas 
      oArea.Copy 
      oArea.Offset(i, 0).PasteSpecial xlPasteAll 
     Next oArea 
    Next i 

End Sub 
+0

ne fonctionne pas, je besoin de quelque chose qui fonctionne sur plusieurs sélections telles que "= $ A $ 1: D $ 1 $, $ F $ 1, $ K $ 1" – Karl

+0

Mise à jour pour les plages disjointes. –

+0

Génial, fonctionne parfaitement, merci – Karl