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

aanpassen vba code for each

Status
Niet open voor verdere reacties.

glda19

Gebruiker
Lid geworden
14 jan 2008
Berichten
901
Hi

De code doet wat ze moet doen.
Maar als de for each voor de 2de x doorlopen word moeten de variable strKolomJaar strKolomWaarde veranderen van j ,k naar m,n
Heb dit nu in de for each lus staan. Maar als de for each voor de 2de x woord doorlopen dan leest hij ook de strKolomJaar strKolomWaarde 2 x
IS daar een beter oplossing voor om dit te voorkomen
Spring nu uit de loop bij de 2de x doorlopen van de for each juist voor het lezen strKolomJaar strKolomWaarde
Kan dit netter worden opgevangen of is dit de beste oplossing

Code:
strKolomJaar = "j" ' letter van de kolom voor het jaartal
    strKolomWaarde = "k" ' letter van de kolom voor de waarde
    IntLaatsteRij = Worksheets("datablad").Cells(Rows.Count, "j").End(xlUp).Offset(1, 0).Row
    For Each Elkecel In Range("c33,c46")
        Worksheets("datablad").Range(strKolomJaar & IntLaatsteRij).Formula = CStr("=Year(Now()) - 1") 'Jaartal vorige jaar
        
            If IsEmpty(Worksheets("datablad").Range(Elkecel.Address)) Then
                Worksheets("datablad").Range(strKolomWaarde & IntLaatsteRij).Value = 0
            Else
                Worksheets("datablad").Range(Elkecel.Address).Copy Destination:=Worksheets("datablad").Range(strKolomWaarde & IntLaatsteRij)
            End If
       
            If Elkecel.Address = "$C$46" Then Exit For ' anders word onderstaande waarde 2 x gelezen wat niet erg is maar niet nodig
    
        strKolomJaar = "m" ' letter kolom voor het jaartal
        strKolomWaarde = "n" ' kolom voor de waarde

Al vast bedankt voor de help
 
Zou (een Excel bestand met de) complete code niet behulpzaam zijn voor evt helpers?
 
rare vraag, je zegt "anders word onderstaande waarde 2 x gelezen "
iedere ronde in de loop wordt hij gelezen. wat maakt die ene keer uit.
haal die controle voor die laatst stap er uit . die wordt nu iedere ronde in de loop voor niets doorlopen.
 
het lijkt me niet zo echt schadelijk, anders moet je daar rond een if...end if-constructie opzetten met "if strKolomWaarde = "k" then ..."
 
Een paar opmerkingen over je code.

- Je hoeft geen lus te gebruiken om de gegevens te plaatsen. Beter is om het in 1 keer te doen.
- Je maakt gebruik van de letters om de kolom te bepalen maar waarom gebruik je de kolomgetallen niet? A = 1, B = 2, etc. Zo kan je verwijzen naar kolommen 10 (J) , 11 (K), 13 (M) en 14 (N)
= Vermijd .Copy. Indien je veel cellen kopieert werkt dit vertragend.

Bijv.:
Code:
Worksheets("datablad").Range(strKolomWaarde & IntLaatsteRij).Value = Worksheets("datablad").Range(Elkecel.Address).Value

Zoals eerder vermeld zou een voorbeeldbestand en de volledige code wel helpen.

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan