• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

VBA 300 keer copy van range naar elke keer 12 cellen lager

Status
Niet open voor verdere reacties.

trainers

Verenigingslid
Lid geworden
8 feb 2012
Berichten
209
Office versie
MS 365
Zit met het volgende.
Een range moet 300 keer gekopieerd (en geplakt) worden.
Deze Range (A35:F46) heeft de naam "Block_Formules_Copy" en bevat alleen formules.
Dit block wil ik kopiëren: eerst naar A47, vervolgens naar A59, dan naar A71 enz. Dus telkens +12.

Wie kan mij op weg helpen.
Bij voorbaat dank.
 
Uiteraard in een loop. Zoiets:
Code:
Sub CopyBlock()
    For i = 47 To 3600 Step 12
        'De kopieer code. Doelcel is Cells(i, 1)
    Next i
End Sub
 
Laatst bewerkt:
Code:
Sub tst()
  Cells(47, 1).Resize(12, 6).Formula = [Block_formules_copy].Formula
End Sub
 
Dank aan edmoor en snb.
Ik heb er dit van gemaakt;
Code:
Sub CopyBlock()
    Dim i As Integer
    For i = 47 To 3600 Step 12
        Cells(i, 1).Resize(12, 6).Formula = [Blok_formules_copy].Formula
    Next i
End Sub
Echter worden de formules exact gekopieerd i.p.v relatief. Zit dat probleem in de 'Resize'?
 
Cells(i, 1).Resize(12, 6).Formula = [Blok_formules_copy].Formula(false, false)
 
Sorry Ginger,

Maar
Code:
Cells(i, 1).Resize(12, 6).Formula = [Blok_formules_copy].Formula(False, False)
geeft de foutmelding:
Knipsel.PNG

:(

Groeten,
Trainers
 
Ok, probeer 'm dan 'ns bij de eerste 'formula' in die regel?
 
Code:
Cells(i, 1).Resize(12, 6).Formula(False, False) = [Blok_formules_copy].Formula
Code:
Cells(i, 1).Resize(12, 6).Formula(False, False) = [Blok_formules_copy].Formula(False, False)
Beide geven dezelfde foutmelding.
 
Plaats anders dat document eens.
 
Zal ik morgen doen. Is even een behoorlijke klus om e.e.a. uit het grote bestand te halen.
 
Code:
Sub kopie300()
    x = 47
    For i = 1 To 300
        Range("A35:F46").Copy Destination:=Range("A" & x)
        x = x + 12
    Next
End Sub

mvg
Leo
 
Leo,
Dat is hem. Werkt als een zonnetje :) . Dank je wel.

Allen, bedankt voor jullie moeite en meedenken.

Groeten,
Trainers
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan