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

Bereik laten bepalen met macro

Status
Niet open voor verdere reacties.

jeroen2605

Gebruiker
Lid geworden
23 dec 2010
Berichten
18
Hallo,

Ik ben met een document bezig, waarin via een druk op de knop tabbladen worden gecopierd.

Nu moet er na het copieren ook een formule in de cellen in een bepaalde kolom kolom komen, zodat er gegevens over worden genomen van het vorige tabblad. Tot hier ben ik er uit gekomen.

Alleen het gaat mis zodra ik op het tabblad dat ik kopier (altijd de laatste) een nieuwe regel heb toegevoegd. Als ik daarna weer via de macro het tabblad copier, is de formule niet in de laatste regel geplaatst (deze staat nu immers buiten het bereik).

Is het ook mogelijk om een variabel bereik te maken, door bijvoorbeeld te zoeken naar een bepaalde waarde in een cel? Ik kan niet laten zoeken naar de laatste regel met waardes, omdat er ook nog totaal rijen onder staan (die niet meegenomen moeten worden).

Hopelijk weet iemand hier een oplossing voor!

groet,
Jeroen
 
Je kunt toch laten zoeken naar de laatste regel - 2 of 3 naargelang.
Je kunt toch ook de totaalrij(en) van boven in uw werkblad zetten en via titels blokkeren heb je de totalen steeds in zicht.
 
Je kunt toch laten zoeken naar de laatste regel - 2 of 3 naargelang.
Je kunt toch ook de totaalrij(en) van boven in uw werkblad zetten en via titels blokkeren heb je de totalen steeds in zicht.

de totaal tijen wil ik graag onderaan houden, het blad wordt namelijk ook uitgeprint en dan heb je een mooiere layout...

hoe kan ik de laatste regel - 2 in de macro noteren dan? heb je hier misschien een voorbeeldje van?

alvast bedankt!
 
Code:
MsgBox Range("A1").End(xlDown).Row

Bovenstaande code geeft de laatste rij gerekend van cel A1.
Dit is tot aan de eerstvolgende lege cel in de A-kolom.

Met vriendelijke groet,


Roncancio
 
Code:
MsgBox Range("A1").End(xlDown).Row

Bovenstaande code geeft de laatste rij gerekend van cel A1.
Dit is tot aan de eerstvolgende lege cel in de A-kolom.

Met vriendelijke groet,


Roncancio

Als ik dit gebruik, krijg ik alleen een een pop up schermpje met daarin het aantal rijen. Ik wou eigenlijk graag dat de rijen worden geselecteerd, zodat ik er bijvoorbeeld een formule in kan zetten.
 
Dit was ook een voorbeeld.
In bijgevoegd bestand wordt het bereik vanaf cel a1 inclusief bijbehorende cellen rood weergegeven.

Code:
Sub Voorbeeld()
Range("A1").CurrentRegion.Interior.Color = vbRed
End Sub

Zonder een voorbeeldbestand blijft het voor ons helpers gissen wat je precies wilt doen.
Dus gaarne een voorbeeldbestand bijsluiten.

Met vriendelijke groet,


Roncancio
 
Dit is de code dit ik gebruik:
Code:
Private Sub Nieuwe_invullijst_Click()

    Sheets(Sheets.Count).Copy After:=Sheets(Sheets.Count)
    
    [COLOR="red"]Sheets(Sheets.Count).Range("J3:J39").FormulaR1C1[/COLOR] = "=VLOOKUP(RC[-8],'" & Sheets(Sheets.Count - 1).Name & "'!R3C2:R41C13,12,FALSE)"
    Sheets(Sheets.Count).Range("S2").Value = Format(Date, "mm-dd-yyyy")
    
    With Sheets("Cashflow")
        .Range("A7:F7").Insert shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        .Range("A5:F5").Copy .Range("A7")
        .Range("A7") = "='" & Sheets(Sheets.Count).Name & "'!S2"
        .Range("B7") = "=VLOOKUP(""Totalen"",'" & Sheets(Sheets.Count).Name & "'!C[-1]:C[11],11,FALSE)"
        .Range("D7") = "=VLOOKUP(""Totalen"",'" & Sheets(Sheets.Count).Name & "'!C[-3]:C[9],12,FALSE)"
        .Range("F7") = "=""Inleg tot "" & TEXT('" & Sheets(Sheets.Count).Name & "'!S2,""dd-mm-jjjj"")"
        .Range("uitstaande_verplichting") = "=VLOOKUP(RC[-4],'" & Sheets(Sheets.Count).Name & "'!C[-4]:C[8],13,FALSE)"
        .Range("te_ontvangen") = "=VLOOKUP(RC[-4],'" & Sheets(Sheets.Count).Name & "'!C[-4]:C[8],13,FALSE)"
    End With
    
    With ActiveWorkbook.Worksheets("Cashflow").ListObjects("Tabel3").sort
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    
Sheets(Sheets.Count).Select

Calculate
 
End Sub

Het gaat dan om het rood gemarkeerde stukje, hier staat nu een vast bereik. Maar omdat er een nieuwe regel toegevoegd kan zijn op het moment dat ik het tabblad kopieer, klopt niet altijd de verwijzing. Het kan best zijn dat hij nu tot en met regel J39 moet selecteren, maar de volgende keer moet dat misschien wel J41 zijn.

Hopelijk is het zo een beetje duidelijk, anders moet ik even een bestandje maken. er staan nu namelijk persoonlijke gegevens in die ik niet online kan / wil zetten...
 
Als ik het goed begrepen heb moet dit voldoen:
Code:
Sheets(Sheets.Count).Range("J3:J[COLOR="red"][B]"&Sheets(Sheets.Count).range("J65500").End(xlup).Row+1[/B][/COLOR]).FormulaR1C1 = "=VLOOKUP(RC[-8],'"...................................
 
Laatst bewerkt:
Hey allemaal,

Bedankt voor jullie reacties tot nu toe!Ik ben al een heel stuk verder!

Ik ben even met een macro aan het testen gegaan en komt tot een werken de code:
Code:
Sheets(1).Range("J3:J" & Sheets(1).Range("J3").End(xlDown).Row - 3).Select

alleen zodra ik hem hetzelfde bereik wil laten selecteren, maar dan op een ander tabblad, krijg ik een foutmelding.

weet iemand wat er niet klopt, voor als ik hem op een ander tabblad iets wil laten selecteren?

Alvast bedankt!

in dit documentje ben in hem aan het testen:
 

Bijlagen

Laatst bewerkt:
jeroen,

probeer dit eens

moet ik dit alleen in voeren, ipv mijn gehele code, of moet ik dit ipv. een deel van mijn code invoeren?

ik krijg namelijk een foutmilding als ik dit alleen invoer, en verder is het hetzelfde als het laatste stuk van mijn code toch?
 
moet ik dit alleen in voeren, ipv mijn gehele code, of moet ik dit ipv. een deel van mijn code invoeren?

ik krijg namelijk een foutmilding als ik dit alleen invoer, en verder is het hetzelfde als het laatste stuk van mijn code toch?

vervang deze regel:
Sheets(1).Range("J3:J" & Sheets(1).Range("J3").End(xlDown).Row - 3).Select
door deze:
Sheets(1).Range("J3").End(xlDown).Row - 3).Select

de rest van je code ongewijzigd laten
 
vervang deze regel:
Sheets(1).Range("J3:J" & Sheets(1).Range("J3").End(xlDown).Row - 3).Select
door deze:
Sheets(1).Range("J3").End(xlDown).Row - 3).Select

de rest van je code ongewijzigd laten

Als ik dat doe, krijg ik de volgende foutmelding:
attachment.php
 

Bijlagen

  • Foutmelding.jpg
    Foutmelding.jpg
    14 KB · Weergaven: 236
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan