Vraag & Antwoord

Programmeren

variabel cellenbereik selecteren in excel

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

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

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