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

bepalen laatst ingevulde regel

Status
Niet open voor verdere reacties.

jansm

Gebruiker
Lid geworden
2 apr 2014
Berichten
421
Hallo mensen,
in voorbeeld wordt in kolom C een datum getoond. Zie hiervoor formule in C5:C26. Nu wil ik de laatste regel waarin een datum wordt getoond bepalen. Met de door mij gebruikte code wordt echter de laatste regel waarin de formule staat bepaald (C26). Ik wil dus in E3 het resultaat 14 en niet 26. Is de code hiervoor aan te passen?

Bekijk bijlage test1.xlsb
 
Met zoiets Jan.
Code:
NumberOfRows = ThisWorkbook.Sheets("Blad1")[COLOR=#0000ff].Cells(5, 3).CurrentRegion.SpecialCells(-4123, 1).Rows.Count + 5[/COLOR]
 
Zonder VBA kan je deze eens testen:
Code:
=VERGELIJKEN(MAX($C$5:$C$100);$C$5:$C$100;0)+4
 
Dag Harry & Cobbe, ben nog niet in staat geweest om te testen. Geef morgen reactie. Alvast bedankt
 
Harry, op zich werkt de code goed alleen van de cel aanduiding (nu telt hij vanaf C5? toch) kan je iets willekeurigs van maken en dan doet hij het ook correct. Echter als je een formule in de kolom ernaast plaatst dan gaat hij de mist is. Niet helemaal idiot proof dus!

Bekijk bijlage test2.xlsb
 
Zoiets Jan?
Code:
With Sheets("Blad1")
 NumberOfRows = .Range("c5:c" & .Cells(Rows.Count, 3).End(xlUp).Row).SpecialCells(-4123, 1).Rows.Count + 1
End With

Of:
Code:
 numberofrows = Sheets("Blad1").Cells(Rows.Count, 3).End(xlUp).SpecialCells(-4123, 2).Row - 1
 
Harry e.a.,
toch nog een vraag: wat is het verband in onderstaande code tussen de aanduiding C5:C en "Cells(Rows.Count, 3)"?
Code:
With Sheets("Blad1")
 NumberOfRows = .Range("c5:c" & .Cells(Rows.Count, 3).End(xlUp).Row).SpecialCells(-4123, 1).Rows.Count + 1
End With
Mijn interpretatie: kolom c vanaf c5 en kolom 3. Maar
dat klopt niet. Zie voorbeeld Bekijk bijlage test3.xlsb
 
Je hebt de code niet goed overgenomen.

Code:
.Cells(Rows.Count, 2)
moet zijn
Code:
.Cells(Rows.Count, [COLOR="#FF0000"]3[/COLOR])
 
dank voor je antwoord VenA.
Lijkt misschien verkeerd, maar....
In het laatste voorbeeld wil ik de code op B draaien. Als ik c:c5 laat staan en 3 verander in 2 dan telt ie idd B. Verander ik c:c5 in b:b5 (mijn simpele verstand zeg dat dat dan moet) krijg ik een fout melding. Ik vraag eigenlijk voor de code van Harry wat c:c5 en de 3 "doet".
Ik probeer de code te begrijpen maar dat lukt me niet. Voor specialcells code -4123 heb ik wel gevonden maar datgeen wat ik vraag niet. Hoop dat ik nu duidelijk ben.
 
In kolom B heb je geen formules staan SpecialCells(-4123). vandaar dat het fout gaat.
 
x = het kolomnummer

Wat je verder wilt ontgaat mij.
 
Je bepaalt de range die je nodig hebt van (in dit voorbeeld) kolom C. Een range wordt weergegeven als bv. "C2:C26". De 26 wil je echter niet hard coderen, maar je wilt de laatste regel "vinden". Dat doe je door in kolom C (= kolom 3) terug te zoeken vanaf het eind naar de eerst gevulde cel. Dus je moet twee keer de kolom aangeven.

Overigens kun je .Cells(Rows.Count, 3) ook vervangen voor .Cells(Rows.Count, "C"). Dat maakt het misschien nog duidelijker?
 
OK VenA en Peter.
Code:
NumberOfRows = .Range("d5:d" & .Cells(Rows.Count, 2).End(xlUp).Row).SpecialCells(-4123, 1).Rows.Count + 5

In deze coderegel bepaalt d5 : d dus dat in kolom D gezocht wordt vanaf d5. Deze kolom (D=4) zou dus ook aangegeven moeten worden in Cells(Rows.Count, 4). Maar kijk naar laatste voorbeeld. Daar kan ook een 2 (=kolom B) of een 3 (=kolom C) ingevuld worden. Dan is het resultaat hetzelfde. Een ander getal dan 2-3-4 geeft een foutmelding. Ik probeer niet als zeur over te komen maar probeer de code te begrijpen, snap ie?
 
Voor alle drie.
Code:
Sub aantalregels()
Dim j As Long
With Sheets("Blad1")
 For j = 2 To 4
  .Cells(3, j) = .Range(.Cells(5, j), .Cells(Rows.Count, j).End(xlUp).Address).SpecialCells(-4123, 1).Rows.Count + 5
 Next j
End With
End Sub
 
@jansm
Natuurlijk kun je specificeren dat in een andere kolom de laatst gevulde cel wordt bepaald. Maar het is verstandig om de laatste cel te bepalen in de kolom die je daadwerkelijk gaat gebruiken. Juist om ongewenst gedrag (fouten, of een verkeerde telling) te voorkomen.

Een voorbeeld:
Code:
       A  B  C  D
rij 1: 1  1  1  1
rij 2: 2  2     2
rij 3: 3  3
rij 4: 4

Je wilt in kolom A (=kolom 1) na de laatst gevulde cel een waarde (bv. 5) laten vullen. Je gaat echter de laatst gevulde cel bepalen in kolom C (=kolom 3) dan zal cel A2 overschreven worden. Immers, de laatst gevulde cel in kolom C = cel C1. De cel hierna is C2.
 
@Peter
je hebt me het idee achter de regel duidelijk gemaakt. Bedankt.
@Harry
dat was voor mij niet de bedoeling, bestandje was opgezet als test. Maar..... hij bij mij gaat mee in het archief (niet de prullenbak hoor!). Komt altijd weer een keer van pas.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan