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

Cellen vergelijken met VBA

Status
Niet open voor verdere reacties.

adile

Gebruiker
Lid geworden
2 mrt 2014
Berichten
202
Goedenavond,

Ik heb een bestandje met 2 werkbladen "Registratie" en "checklist passen".

Zie voorbeeld.

In het werkblad registratie, worden passen geregistreerd die zijn uitgegeven retour zijn gekomen of niet op tijd retour zijn.
In kolom A heb ik het pasnummer staan en in kolom H staat de status van de betreffende pas.

Ik werkblad checklist, hou ik bij welke passen ik retour heb welke uitgegeven zijn en welke ik kwijt ben (dus niet retour).
ik wil met de knop automatische check een macro laten lopen die de pasnummers vergelijkt met de status en deze automatisch bijwerkt in de checklist.
dit hoeft alleen te gebeuren voor de status pas uitgegeven en pas niet retour.

dus wanneer de macro loopt moet hij kijken naar pas niet retour en pas uitgegeven, en welke pasnummers dit zijn en deze bijwerken.
ik hoop dat ik het zo een beetje heb kunnen uitleggen, en dat er iemand is die mij hiermee kan helpen.

Alvast bedankt

Adile
 

Bijlagen

Probeer deze eens. Er is een benoemd bereik met de naam Checklist. Je kan je eigen knop ervoor gebruiken die er dus al stond. Tevens de andere routines wat aangepast.
Bekijk bijlage Voorbeeld.xlsm
 
Laatst bewerkt:
Edmoor,

Dank voor je hulp, ik heb het voorbeeld bestand getest en dat is preceis zoals hij zou moeten werken.

maar nu plak ik jouw codes in module1 van mijn bestand, laat dan de macro zoijn werk doen en ik krijg een error en volgende balk is in het geel: For Each cel In Range("Checklist")
het verschil met mijn originele bestand en het voorbeeld bestand is dat in het originele bestand het werkblad registratie 5000 rijen heeft ipv 14.

Dan zou je denken, ik pak het voorbeeld bestand en trek de rijen gewoon door naar 5000 en gebruik dat bestand.
dan krijg ik weer een foutmelding op deze regel die dan geel wordt: GetAddress = cel.Address

Waar zou dit aan kunnen liggen?

Adile
 
Het maken van wat je in je voorbeeld vroeg is een precies werkje. Je verplaatst nu de code en je document is anders. Logisch dat het dan niet goed gaat. Ik zou zeggen, lees wat de code doet en pas het aan naar de gewenste situatie. Als het niet lukt is de enige manier om je te helpen, het plaatsen van het originele bestand in plaats van het voorbeeld.

Geen idee trouwens waarom je die code naar een module zou willen verplaatsen, dat is nergens voor nodig.
En heb je het benoemde bereik wel aangemaakt?
 
Laatst bewerkt:
Ik heb geprobeerd je code te snappen, maar hij is voor mij wat ingewikkeld.

Het originele bestand is exact als het voorbeeld bestand, alleen heeft het werkblad registratie 5000 rijen ipv de 14 rijen in het voorbeeld bestand.
 
Waarom dan de code in een module zetten? En heb je dat benoemde bereik wel aangemaakt? Het aantal rijen in het blad Registratie maakt niet uit.
 
Laatst bewerkt:
Ik zie net pas dat het al in een module stond. Dat is dus niet de oorzaak. Dat benoemde bereik waarschijnlijk wel.
 
Ja, omdat de checklist aan het einde van de dag gecontroleerd wordt dacht ik dat het handig is dit met een knop te doen ipv hem alles constant te laten aanpassen.

ja dat bereik heb ik aangemaakt.

zoals ik eerder vermeldde, heb ik het op 2 manieren geprobeerd.
jouw code naar mijn bestand gekopieerd. werkte niet.

jou bestand aangepast (dat wil zeggen de rij 14 heb ik gekopieerd en geplakt tot rij 5000. toen hield jij macro er ook mee op.
 
Plaats dan het originele bestand zoals deze nu is. Dan kan ik wel zien waarom het niet goed gaat. De functie GetAddress heb je ook in de module gezet neem ik aan?
 
ja dat denk ik dus ook, waar zou ik jouw code kunnen aanpassen zodat hij t/m rij 5000 blijft werken.
 
Wat ik al zei, dat aantal rijen maakt niet uit. Let er wel op dat na dat doortrekken de pasnummers nog kloppen.
 
Laatst bewerkt:
Zoals al eerder gezegd moet je het bereik Checklist aanmaken.
Selecteer op Checklist aanpassen de eerste reeks nummers (C4:C28), houd nu de CTRL-toets ingedrukt en selecteer met de muis alle andere nummers.
Nu moet je in het Naamvak (vak links van de formulebalk) het woord Checklist intypen en bevestigen met ENTER.
Draai nu de macro nog maar eens.
 

Bijlagen

Laatst bewerkt:
Rudi,

Thanx voor je uitleg, voel me wel erg stom nu haha
Ik dacht dat edmoor bedoelde de rijen aanmaken.

Ik heb in mijn originele bestand het bereik checklist aangemaakt.
alleen loopt hij dus weer vast op GetAddress = cel.Address

Maar goed dat is niet heel erg want ik maak dan van het laatste bestand van jouw mijn originele bestand dan is alles ook opgelost want die werkt wel. :)

Bedankt voor je heldere uitleg. en Edmoor bedankt voor de oplossing.

Adile
 
Ok dan. Dus toch het benoemde bereik ;) Fijn dat het nu naar je zin werkt.
Graag gedaan En mocht je er toch nog een wijziging in nodig hebben dan zien we dat hier wel :)
 

Bijlagen

  • 1.jpg
    1.jpg
    92,5 KB · Weergaven: 65
Ik wil er best naar kijken maar dan wel in het originele document.
Ik heb rekening gehouden met 2 sets pasnummers: 701-785 en 1001 - 1049
Als je nummers gebruikt die daar buiten liggen zal je de genoemde fout optreden.
 
Laatst bewerkt:
Dezelfde code doet het nog steeds prima maar omdat het blad is gewijzigd klopt het ophalen van de laatst gevulde regel niet meer. Het pasnummer is dan 0.
Voeg deze regel in de code in:
Code:
If Pnr = 0 Then Exit Sub

Direct na deze regel:
Code:
Pnr = .Cells(i, 1).Value

Een extra controle dus.
De Sub Autocheck moet er dan zo uit zien:
Code:
Sub AutoCheck()
    Dim Pnr As Integer
    
    With Sheets("Registratie")
        For i = 4 To .Cells(.Rows.Count, "A").End(xlUp).Row
            Pnr = .Cells(i, 1).Value
            If Pnr = 0 Then Exit Sub
            If Pnr > 785 Then
                Pnr = Pnr - 915
            Else
                Pnr = Pnr - 700
            End If
            Range(GetAddress(Pnr)).Offset(, 1).Value = .Cells(i, 8)
        Next i
    End With
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan