2012-01-09 3 views
0

Quel serait un bon moyen d'incrémenter chacune de mes plages, par exemple j'ai besoin de x pour copier la plage B11: à G20 et collez-le à C10 pour la deuxième boucle. Chaque variable a des incréments différents.VBA quelle est la meilleure façon d'incrémenter en boucle

Im en utilisant Excel 2010

Toute aide est appréciée parce que je suis avec horreur Visual Basic.

Dim i As Range, j As Range, k As Range 
Dim x As Range, y As Range 
Dim Num As Integer 

Num = 94 

Set x = Sheets("Sum Data").Range("B1:G10") 
Set j = Sheets("PNA Physical Needs Summary Data").Range("C4") 
Set i = Sheets("PNA Physical Needs Summary Data").Range("B4:B9") 
Set k = Sheets("Sum Data").Range("A1") 
Set p = Sheets("PNA Physical Needs Summary Data").Range("P3:P8") 
Set e = Sheets("PNA Physical Needs Summary Data").Range("A4:A9") 

Do 
    Sheets("Sum Data").Select 
    x.Copy 
    Sheets("PNA Physical Needs Summary Data").Select 
    j.Select 
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ 
    False, Transpose:=True 

    p.Select 
    Selection.Copy 
    i.Select 
    ActiveSheet.Paste 

    Sheets("Sum Data").Select 
    k.Select 
    Application.CutCopyMode = False 
    Selection.Copy 
    Sheets("PNA Physical Needs Summary Data").Select 
    e.Activate 
    ActiveSheet.Paste 

    Num = Num - 1 

Loop Until Num = 0 

Répondre

3

Vous pouvez utiliser Offset(). Par exemple:

Set x = x.Offset(rowOffset, colOffset) 

aussi - vous n'avez pas besoin de sélectionner des gammes copier:

p.Copy i 

est le même que:

p.Select  
Selection.Copy  
i.Select  
ActiveSheet.Paste 
+0

Ok j'ai changé la copie et la pâte, je essayé Offset dans la boucle mais il reste coincé sur certaines pages et ne s'incrémente pas. Faites x.Copy Sheets ("PNA physique Résumé des besoins de données") Sélectionnez j.Select Selection.PasteSpecial Coller:. = XlPasteAll, Opération: = xlNone, SkipBlanks: = _ Faux, Transposer: = True p .copy i k.Copy e Nb = Nb - 1 x = x.Offset (10, 0) j = j.Offset (5, 0) i = i.Offset (5, 0) k = k.Offset (10, 0) e = e.Offset (5, 0) – user1139384

+0

Que voulez-vous dire par "coincé"? Je remarque que vous n'utilisez pas "Set" lorsque vous déplacez les plages: besoin de cela. –

Questions connexes