• 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.

Formule doortrekken mbv VBA: wisselend bereik

Status
Niet open voor verdere reacties.

arrie23

Gebruiker
Lid geworden
20 okt 2009
Berichten
400
Beste lezer,

Ik ben op zoek naar een simpel VBA-script dat een formule doortrekt tot het einde van een variabel bereik.
In bijgevoegd voorbeeld zijn in kolom A de cellen A1:A12 gevuld met de getallen 1 t/m 12. In cel B1 plaats ik de formule =A1*5 en trek deze m.b.v. de vulgreep naar beneden door (in dit geval dus t/m regel 12). Als ik dit alles opneem m.b.v. de macrorecorder krijg ik het volgende VBA scriptje. Zoals je ziet staat hierin een vaste Range (B1:B12) genoemd. Als kolom A echter bijvoorbeeld gevuld is van regel 1 t/m 24 wil ik m.b.v. de macro dat de formule doorgetrokken wordt t/m regel 24, in het geval van 28 gevulde regels in kolom A t/m regel 28 etc.. Hoe pas ik het scriptje aan dat de formule altijd doorgetrokken wordt tot de laatste regel.

Sub Formule_doortrekken()

Range("B1").Select
ActiveCell.FormulaR1C1 = "=RC[-1]*5"
Range("B1").Select
Selection.AutoFill Destination:=Range("B1:B12")
Range("B1:B12").Select

End Sub
 

Bijlagen

Waarom een VBA script als dit al standaard in excel aanwezig is.
In plaats van de formule doortrekken kun je ook dubbelklikken op het vierkantje rechts onderin. (cursor wordt een 'plusje')
De formule word dan automatisch door gekopieerd naar beneden zover als er gegevens in de kolom er naast staan.
 
Het bijgevoegde voorbeeld is sterk versimpeld. De bedoeling is dat ik mijn collega's een macro geef die naast het automatisch doortrekken van een veel complexere formule nog allerlei andere handelingen automatiseert. Alles werkt alleen heb ik het stukje vba script nodig wat de range van de formule dynamisch maakt ipv nu statisch.
 
Code:
Sub Formule_doortrekken()
    With Range("B1")
        .FormulaR1C1 = "=RC[-1]*5"
        .AutoFill Range("B1:B" & Sheets("Blad1").Cells(Rows.Count, 1).End(xlUp).Row)
    End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan