Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

variabel cellenbereik selecteren in excel

Anoniem
m.a.degraaff
9 antwoorden
  • Wellicht een simpel antwoord mogelijk maar ik kom er niet goed uit.
    In een excel (97) werkblad wil ik vba code die altijd vanuit cel C4 een X aantal gevulde cellen naar beneden selecteert. Waarbij X variabel is. Er moet echter geselecteerd worden tot de laatste gevulde cel van kolom C. de rijen 1-3 en kolommen A&B bevatten ook gegevens, deze moeten echter buiten schot blijven.
    Nu weet ik wel hoe ik van C4 naar de laatst gevulde kan 'springen' maar ik wil het tussenliggende aantal cellen geselecteerd om vervolgens te kunnen kopieren.
    Hoe kan ik dat doen?
    martin
  • Kun je een (relevant) stukje van je huidige code pasten?
  • tja, ik kom niet verder dan
    [i:2a0d3c38a9]Range("C4:C33").Select
    Selection.Copy[/i:2a0d3c38a9]
    of
    [i:2a0d3c38a9]Range("C4").Select
    Selection.End(xlDown).Select.[/i:2a0d3c38a9]
    In deze laatste code gebeurt wat moet, nl hij springt naar de laatst beschreven cel, maar kopieert de tussenliggende cellen niet.
    In het eerste geval wel maar op een volgend blad moet er bijv. tot C40 worden geselecteerd. Ik heb dus een combinatie nodig of iets geheel nieuws.
  • Als kolom A en B gevuld zijn tot de laatste kolom die je in kolom C wilt selecteren:

    Neem een macro op:
    - Begin bij cel C1
    - Houdt shift ingedrukt en ga 1 cel naar links (B1)
    - Druk <End><pijltje naar beneden>
    - Ga 1 cel naar rechts (kolom C)
    - Stop het opnemen van de macro en bekijk het resultaat in VBA.

    Als je naar de laatste gevulde cel van kolom C wilt zonder in A of B te kunnen komen (of als dit geen zin heeft).

    Neem een macro op:
    - Begin weer bij C1
    - Selecteer nu C1 tot na het uiterste berijk naar beneden max 65536
    - Druk <end> <pijltje omhoog> (het geselecteerde is nu de laatste cel van kolom C)
    - Beeindig het opnemen van de macro.

    Hopelijk heb je hier iets aan…


    Grtz,
  • mark, nee helaas
    Beide blokken code blijven een vast aantal cellen selecteren. Als in mijn blad C40 de laatste is, selecteert de code tot C40. Dat is goed, alleen op het volgende blad moet het bijv. tot C45. De code moet dus zelf kunnen bepalen wat de laatst gevulde cel is in de kolom en daarop selecteren en verdere handelingen verrichten.
  • Je wilt dus eigenlijk voor verschillende werkbladen de volgende truc uithalen?

    [code:1:1eb7c472ff]
    Range("C4").Select
    Selection.End(xlDown).Select
    [/code:1:1eb7c472ff]

    Dan zou je een for loop moeten gebruiken die door de werkbladen heen loopt en waar nodig de rest van de statements uitvoert.

    Bijvoorbeeld:
    [code:1:1eb7c472ff]
    for each ws in worksheets
    Range("C4").Select
    Selection.End(xlDown).Select
    'Overige uit te voeren acties
    next ws
    [/code:1:1eb7c472ff]

    Hopelijk begrijp ik wat je wilt en heb je hier iets aan.


    Grtz,
  • mark,
    wellicht ben ik niet duidelijk geweest, maar
    [quote:9e28e4478c]Range("C4").Select
    Selection.End(xlDown).Select
    [/quote:9e28e4478c]
    plaats de cursor in cel C4 (dat is inderdaad altijd de begincel)
    springt dan naar de laatste gevulde cel in kolom C, (heb ik ook nodig)
    maar moet vervolgens de cellen
    C4 tot Cx (waarbij x per blad kan verschillen) selecteren en vervolgens ergens anders naar toe kopieren, en dat gebeurt niet in dit stukje code.
    Dus ik heb nu wel begin en eindcel maar niet de selectie.
    martin
  • [code:1:b3bb8cc35a]
    Range("C4").Select

    With ActiveSheet.UsedRange
    endrow = .Cells(.Cells.Count).Row
    End With

    Range("C4:C" & endrow).Select
    Selection.Copy[/code:1:b3bb8cc35a]

    zo dan misschien?
  • Als je de oplossing die ik had gegeven aanvult met de "Selection.copy" van Baco dan wordt toch het berijk dat je nodig hebt geselecteerd en gekopieerd?

    Het stukje in de lus wordt dan dus:
    [code:1:f268db1740]
    Range(C4).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Range("I3").Select
    ActiveSheet.Paste
    [/code:1:f268db1740]

    Bij de verschillende werkbladen moet je dan het for lusje eromheen zetten.

    Ik begin nu te geloven dat het Range stukje dat was waardoor we langs elkaar heen werkten :wink:

    Grtz,

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.