Opnieuw tellen bij toevoegen rij

Status
Niet open voor verdere reacties.

leenvl

Gebruiker
Lid geworden
25 jan 2011
Berichten
13
Ik heb een formulier gemaakt waarbij eerst gekeken wordt hoeveel ‘niet-lege’ rijen er zijn. Vervolgens wordt er per rij een formule uitgevoerd. Het is in de formule mogelijk dat er een nieuwe rij wordt toegevoegd, maar omdat vooraf het aantal rijen als is berekend worden de extra rijen onderaan niet meegenomen. Ik heb hieronder een stuk uit de formule geplaatst. Heeft iemand een idee hoe dit op te lossen?

Code:
'bepaal het aantal opgehaalde gegevens
  Sheets("nacalculatie_verlof").Select
  Range("a1:a1000000").Select
  Selection.Find(What:="", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
      xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
      False).Select
  Aantal = Selection.Row - 1


For i = 2 To Aantal
    k = i + 1
    j = i + 2
    If ActiveSheet.Cells(i, 3).Value <= ActiveSheet.Cells(i, 7).Value Then
    'Voldoende verlof, waarde wordt Verlof
    '!Waarde nog aanpassen zodat het in 2014 ook nog klopt
            ActiveSheet.Cells(i, 4).Value = "Voldoende verlof, verlof geboekt"
            'Saldo V2013 verlagen
            If ActiveSheet.Cells(k, 10).Value = ActiveSheet.Cells(i, 10).Value Then
                ActiveSheet.Cells(k, 7).Value = ActiveSheet.Cells(i, 7).Value - ActiveSheet.Cells(i, 3).Value
            End If
    Else
    'Gedeeltelijk saldo, van beide boeken.
    '!Zorgen dat de regel ertussen wordt ingevoegd, zodat de formules goed blijven lopen.
        Sheets("nacalculatie_verlof").Select
        Rows(i).Select
        Selection.Copy
        ActiveCell.Offset(1).EntireRow.Insert
        'Uren worden opgesplitst
        ActiveSheet.Cells(k, 3).Value = ActiveSheet.Cells(k, 3).Value - ActiveSheet.Cells(i, 7).Value
        ActiveSheet.Cells(i, 3).Value = ActiveSheet.Cells(i, 7).Value
        ActiveSheet.Cells(i, 4).Value = "Gedeeltelijk verlof, verlofsaldo"
        'Saldo aanpassen
        If ActiveSheet.Cells(k, 5).Value = ActiveSheet.Cells(i, 5).Value Then
            ActiveSheet.Cells(k, 7).Value = ActiveSheet.Cells(i, 7).Value - ActiveSheet.Cells(i, 3).Value
            ActiveSheet.Cells(j, 7).Value = ActiveSheet.Cells(k, 7).Value
        End If
    End If
Next i
 
Je kunt een while loop gebruiken ipv een for loop. je kunt dan het einddoel aanpassen elke keer als je een regel toevoegd.

overigens:

Code:
aantal = Sheets("nacalculatie_verlof").range["a1000000"].end(xlup).row

doet volgens mij hetzelfde als je eerste stuk code
 
Dat heb ik nu aangepast, maar ik blijf hetzelfde probleem houden. Op het moment dat het statement wordt gestart, wordt gekeken hoeveel 'aantal' is. Dus als het aantal rijen in het begin 10 is, dan wordt het statement tot 10 doorlopen. Ook als ik 'aantal' ergens laat ophogen.
 
Zoals ik aangaf in mijn post kun je beter een WHILE statement gebruiken (ik weet niet of dat is gebeurt) . Een FOR loop kun je namelijk niet aanpassen door "aantal" te veranderen. Een while loop kan dat wel.

Code:
aantal = 10
x=0

while x < aantal
     if x=5 then
         aantal = aantal + 1
     end if
     x = x + 1
wend
msgbox (x)
 
Laatst bewerkt:
Ik weet niet wat ik eerst verkeerd gedaan heb, maar het werkt nu. Bedankt wampier!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan