laatst ingevulde cel in een range zoeken met VBA

Status
Niet open voor verdere reacties.

brejen

Gebruiker
Lid geworden
21 apr 2007
Berichten
111
Beste,

ik zoek naar een mogelijkheid om in een range de laatst ingevulde cell te vinden. ik heb dit als volgt geprobeerd:

Sheets("sheet1").Select
startkol = [A2]
Set wbshtSelect = Sheets("sheet1")
With wbshtSelect.Range(Cells(26, startkol -13), Cells(31, startkol - 13)).CurrentRegion
LR_wbSelectNew = .Rows(.Rows.Count).Row
End With

maar hiermee kom ik telkens op dezelfde cel uit en niet op de laatste met een waarde er in.

kan ik dit op een andere manier oplossen?
 
Bedoel je nu laatst ingevuld in de tijd ? of de laatste cel van een verticale kolom ?

Laatste cel van een kolom kiezen is gewoon : Selection.End(xlDown).Select
 
Laatst bewerkt:
Wat je wilt is inderdaad erg onduidelijk.
Dit haalt de laatst ingevulde cel van een opgegeven range op:
Code:
c = Split(Sheets("Sheet1").Range("A1:X25").SpecialCells(2).Address, ",")
LaatsteCel = Replace(c(UBound(c)), "$", "")
 
Het is inderdaad de laatste ingevulde cel in een range die ik zoek.Het probleem is echter dat de range niet vast bepaald is, maar wijzigt in functie van variabele 'startkol'.
Mag ik in regel 1 de volgende wijziging aanbrengen : c = Split(Sheets("Sheet1").Range(cells(26, startkol-13),cells(31,startkol-13)).SpecialCells(2).Address, ",")
Ik heb dat gedaan maar ik krijg op regel 2 een foutmelding nl dat er een matrix gezocht wordt.
 
Dan klopt jouw wijze voor het bepalen van de Range dus niet.
 
Ik heb nu met de oorspronkelijke code van hierboven opnieuw getest en daar krijg ik ook de melding op de er een matrix verwacht wordt.
Wat kan in nog doen?
 
ik kan het oorspronkelijke bestand niet delen vermits er vertrouwelijke klantengegevens in staan. ik heb hetgene er uit gehaald waar het over gaat. zie bijlage: hierin zou in de gedefinieerde range de rijnummer waar "C" staat moeten weergegeven worden.Maar dat lukt dus niet.
 

Bijlagen

  • Map1.xlsm
    14,5 KB · Weergaven: 32
In dat geval deze:
Code:
c = Split(Sheets("Blad1").Range("A1:X25").SpecialCells(2).Address, ":")
LaatsteCel = Replace(c(UBound(c)), "$", "")

Je voorbeeld is wel heel erg simplistisch.
Dat kan in je originele document wel weer anders zijn.
 
Code:
x = Application.Max(5, Cells(Rows.Count, [a1] + 2).End(xlUp).Row)
 
aan edmoor: de code die je gaf werkt in mijn originele bestand maar selecteert uiteindelijk een range. Ik moet echter de cell juist onder die range vinden; de variabele 'taatstecel' bevat die range maar hoe kan ik daar de laagste cel uithalen?
vb de range is F5:F7 dus ik zou graag cell F8 selecteren?
 
Zo?
Code:
c = Split(Sheets("Blad1").Range("A1:X25").SpecialCells(2).Address, ":")
Range(c(UBound(c))).Offset(1).Activate
 
de code doet nog steeds niet echt wat het moet doen : zie bijlage: zou in de range F5 F10 de onderste cel moeten zoeken en juist daaronder '5' zetten. als je de macro meerdere keren na elkaar laat lopen zie je dat de '5' telkens op een andere plaats gezet wordt.
 

Bijlagen

  • Map1 (3).xlsm
    15 KB · Weergaven: 25
Waar haal je nu ineens die '5' vandaan?
De code in #12 doet in je voorbeeld document van #8 precies wat je in #11 vraagt.
Wees nou eens duidelijk in wat je precies wilt.
Zo blijven we bezig en hebben we er beide niks aan.
 
ik heb die '5' gewoon gebruikt om te laten zien in welke cel die gezet wordt.
wat ik wil is: ongeacht welke cellen in range F5-F10 ook niet-blank zijn, de volgende cel waarin iets weggeschreven wordt (in dit voorbeeld '5') moet onder de onderste niet-blanke cel zijn in het bereik F5-F10.
hopelijk is hiermee verduidelijkt wat is precies bedoel.
 
dan kan je gewoon terug naar post #2. selecteren van die cel, eentje lager gaan staan en wegschrijven.
 
er staat een klein maar niet onbelangrijk verschil tussen de code van Edmoor in #12 en de code gebruikt door TS in #13.
In de ene wordt er gesplit op "," en in de andere op ":'.
1 en ander is niet zonder belang naargelang van de grootte (1 of meerdere cellen) van de verschillende areas.
Even apart van die UsedRange, zou ik dit voorstellen om de laatste cel te vinden
Code:
c = Split(Replace(Sheets("Blad1").UsedRange.SpecialCells(2).Address, ",", ":"), ":")
Gaat het over de laatste cel van een bepaalde kolom, dan is het natuurlijk veel eenvoudiger.
 
Laatst bewerkt:
het gaat wel degelijk over een bepaalde range en niet een kolom. Moet ik dan UsedRange apart declareren?
 
de code werkt perfect nu. Hier kan ik mee verder. Heel hartelijk dank
 
Hou er wel rekening mee dat de Usedrange oplossing niet perfect is. Het hangt van je toepasssing af of je die kunt gebruiken.
Vroeger werd je vraag heel vaak gesteld en werd er veel over geschreven. Zie bijvoorbeeld https://www.rondebruin.nl/win/s9/win005.htm
Tegenwoordig (vanaf Excel 2007) gebruikt men steeds vaker de Excel tabel (listobject), die maakt dit soort kwesties veel eenvoudiger. Maar het hangt van jouw toepassing af of je die tabellen kunt benutten.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan