• 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

Status
Niet open voor verdere reacties.

verluc

Gebruiker
Lid geworden
29 mei 2009
Berichten
540
Heb onderstaande formule in mijn macro bij Workbook_open :

Range("D4:N4").AutoFill Destination:=Range("D4:N" & Cells(Rows.Count, "A").End(xlUp).Row)

Deze werkt perfect, maar zou enkel voor de kolommen D,F,H,I,J,K, en N mogen toegepast worden;
Is dit mogelijk om deze afzonderlijk te benoemen in deze lijn?
Met dank.
 
Even kijken naar wat de code doet! En het even opsplitsen naar bv:

Code:
t = Cells(Rows.Count, "A").End(xlUp).Row
Range("D4").AutoFill Destination:=Range("D4:D" & t)
Range("F4").AutoFill Destination:=Range("F4:F" & t)
Range("H4:K4").AutoFill Destination:=Range("H4:K" & t)
Range("N4").AutoFill Destination:=Range("N4:N" & t)
 
Code:
Sub M_snb()
    For Each ar In Sheet1.Range("D4,F4,H4:K4,N4").Areas
      ar.AutoFill ar.Resize(Cells(1).CurrentRegion.Rows.Count - 1)
    Next
End Sub
 
Ook mogelijk (maar oplossing van snb is korter en fraaier):
Code:
Sub macro1()
Dim c As Integer
'Deze code is geschreven door Zapatr
For c = 4 To 14
   If c / 2 = Int(c / 2) Then
      Range(Cells(4, c), Cells(Cells(Rows.Count, 1).End(xlUp).Row, c)).FillDown
   End If
Next c
End Sub
 
Laatst bewerkt:
SNB, bij het wijzigen van Uw 'Sheet1' in 'Berekening' krijg ik foutmelding.
Enig idee waarom ?
Met dank.
 
waarschijnlijk: sheets("Berekening").range("....
 
@verluc:
snb moet nu een gok doen over wat er aan de hand kan zijn. Een foutmelding is er om te laten weten welk probleem zich voordoet. Het is dus handig om als je zegt een foutmelding te krijgen deze er ook even bij te vermelden.
 
Sorry Edmoor, vergetelheid.

De foutmelding is 1004 op deze lijn :

ar.AutoFill ar.Resize(Cells(1).CurrentRegion.Rows.Count - 1)

Hopelijk volgt een oplossing.
Met dank
 
Wat snb al zei, een probleem met een range. Wat is het aantal regels in de CurrentRegion op dat moment?
 
Laatst bewerkt:
Edmoor,

De currentregion is op dit ogenblik A4:N195
Ik zou liever zien, op basis van de kolom A tot de laatste rij omdat dit nogal variabel is.
 
Code:
Sub M_snb()
    For Each ar In Sheets("berekening").Range("D4,F4,H4:K4,N4").Areas
      ar.AutoFill ar.Resize(sheets("berekening").Cells(1).CurrentRegion.Rows.Count - 1)
    Next
End Sub
 
Laatst bewerkt:
Sorry SNB, bij het doorlopen van deze macro krijg ik de foutmelding :

Error 9 : Het subscript valt buiten het bereik

Misschien een idee, rekeni ng houdend dat de current region begint op A4

Met dank.
 
Haal de "1" eens achter "Sheets("berekening")1.range(.... weg.
 
Na deze wijziging krijg ik de foutmelding : 1004

Eigenschap current region van klasse range kan niet worden opgehaald
 
Misschien tijd voor het toevoegen van een bestandje.
 
Hoewel mijn voorliefde voor one-liners (SNB) heb ik toch de oplossing van VenA gekozen.
Deze oplossing geeft mij inderdaad het juiste resultaat.
Met hartelijke dank voor alle suggesties !!
 
Niets ten nadele van het antwoord van VenA, maar de opl. in bericht #4 geeft ook een juist resultaat hoor.
Natuurlijk gelden voor alle oplossingen dat er in de A-kolom ergens wat moet staat in een rijnummer hoger dan 4, anders zie je niets gebeuren. Misschien heb je daar bij het testen (soms) niet op gelet.
 
Zapatr,

Wat betekent in Uw macro : If c / 2 = Int(c / 2) Then

Deze betekenis ken ik niet, vandaar mijn keuze voor de oplossing van VenA
 
c is een getal, het kan de waarden 4 t/m 14 aannemen, want in de macro staat: For c = 4 to 14, hiermee worden de kolommen 4 t/m 14 doorlopen (de kolommen D t/m N).
c/2 is een deling, het getal c wordt gedeeld door 2. Dus je krijgt achtereenvolgens: 4/2, 5/2, 6/2, enz.
int staat voor integer, geeft het gehele getal van de deling weer.
Er wordt gekeken of de uitkomst van de deling wel of niet een geheel getal is.
Dus als c = 4 geldt: c/2 = 4/2 = 2; int(c/2) = geheel getal van 2, dat is ook 2.
als c= 5 geldt: c/2 = 5/2 = 2,5 en int(c/2) = geheel getal van 2,5 = 2. c/2 komt nu niet overeen met int(c/2).
Je begrijpt dat telkens als c oneven is (daar had ook op getest kunnen worden), de deling c/2 niet gelijk is aan int(c/2). De macro zegt vervolgens dat telkens als de deling een geheel getal is (dus als het kolomnummer even is), de formules in rij 4 doorgetrokken moeten worden naar beneden.
 
Laatst bewerkt:
@Verluc,
Als je die deling wil vermijden, kan het ook zo (à la VenA zeg maar, maar wat ingekort):
Code:
Sub macro1()
Dim lr As Integer
lr = Range("A" & Rows.Count).End(xlUp).Row
Union(Range("D4:D" & lr), Range("F4:F" & lr), Range("H4:H" & lr), Range("J4:j" & lr), Range("L4:L" & lr), Range("N4:N" & lr)).FillDown
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan