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

Hoe kan ik een range doorlopen

Status
Niet open voor verdere reacties.

linkav

Gebruiker
Lid geworden
13 jun 2007
Berichten
465
Beste,

Ik heb een bereik gedefinieerd met de naam KBDates = samenvatting!$AC$12:$AG$701 (=5 kolommen en 689 rijen).

Ik zou eigenlijk de range moeten doorlopen van beginnende van AC12 zo tot AC701. Afhankelijk van de waar de van Range("AC"&tmpRow) moet ik iets doen met Range("AD"&tmpRow) / Range("AD"&tmpRow) / Range("AE"&tmpRow) / Range("AF"&tmpRow) of Range("AG"&tmpRow). Het liefst wil ik niet Range("AC"&tmpRow) gebruiken maar iets met KBDates.... gebruiken. Kan dit? Zoja hoe doe ik dit dan.
 
Zonder voorbeeld document, probeer dit eens:
Code:
For Each Cel in Range("KBDates")
    'Je code, waarbij Cel een Cell object is
Next Cel
 
Laatst bewerkt:
Hallo Edmoor,

Bedankt voor je reactie.

Kan ik nu ook nog zien in welke kolom ik zit? Of kan ik enkel de eerste kolom van die range doorlopen?

Eigenlijk gaat het om een tabel (ik dacht eerst dat het een 'gewone' range ging). Werkt dat hier ook op?
 
Ik gaf aan dat de variabele Cel een Cell object is, daar kan je dus ook aan zien in welke kolom de onderhanden cel zich bevindt met Cel.Column
Met een voorbeeld document krijg je een veel gerichter antwoord.
 
Beste Edmoor,

In wou mijn doc toevoegen maar kan niet meer dan 100 kb toevoegen en het bestand is gezipt een 400 kb groot. Een andere oplossing?
 
Sla hem op als .xlsb (Excel binaire werkmap) en probeer het dan nog eens.
 
Beste Edmoor,

Ik heb wat kolommen weggehaald en zie hier het voorbeeldje. Bekijk bijlage Voorbeeld klein.xlsm

Onder de knop "update planning" zit code. Deze zou nu al niet meer werken omdat de kolom die nu "G" is eigenlijk "AC" was maar omdat ik kolommen verwijderd heb....

Dus vandaar mijn vraag kan ik de tabel die nu van G12 tem K701 staat doorlopen van de eerste datum tot de laatste. Afhankelijk van wat de waarde in de kolom K is moet er iets gebeuren.


Hopelijk nu iets duidelijker.
 
Het verandert weinig aan wat ik eerder al zei:
Code:
    For Each cel In Range("G12:K701")
        Debug.Print cel.Value
    Next cel
 
Hallo,

Ik wil juist geen g12:k107 gebruiken en wil gebruik maken van een bereiknaam bvb planning.
 
Dat stond dus al in #2 :shocked:

Uiteraard moet je dan wel de juiste naam gebruiken en in je vraag in #1 had je het over de naam KBDates.
Code:
    For Each cel In Range("Tabel_Query_van_ged_1")
        Debug.Print cel.Value
    Next cel
 
Dat is al een deel van de oplossing!!! Merci!!

Kan ik nu ook alleen de eerste of 5de kolom van "Tabel_Query_van_ged_1" doorlopen en niet elke cel?
 
Ik liet al zien dat je Cel.Column kan gebruiken. Bijvoorbeeld op deze manier:
Code:
    For Each Cel In Range("Tabel_Query_van_ged_1")
        Select Case Cel.Column
            Case 7
                'Code voor de eerste kolom
            Case 11
                'Code voor de vijfde kolom
        End Select
    Next Cel
 
Nee. Het gaat om de range G12 t/m K107. De variabele Cel geeft z'n kolomnummer terug met Cel.Column. Voor G (de eerste kolom in de range) is dat 7 en de laatste kolom is K en dat is kolom 11.
 
Edmoor,

Maar dan heb ik nog een probleem als er een kolom tussen gevoegd zou worden!?! Dan werkt mijn code ook niet meer!?! En dat is nu wat ik juist moet vermijden...

Kan ik niets doen met de velden van de tabel "Tabel_Query_van_ged_1"? De query van de tabel ziet er als volgt uit
"SELECT SMK.SMDEMD as "Datum", SMK.SMDAG as 'Dag', SMK.SMWERK as 'Werkdag?', KBDATES.KBDDPD as 'DPD?', KBDATES.KBDOPM as 'Opmerking'
FROM KDGEDF.SMK SMK LEFT OUTER JOIN GPC.KBDATES KBDATES ON SMK.SMDEMD = KBDATES.KSLEMD order by smk.smdemd

Is er geen mogelijkheid in de trend van
for each datum in "Tabel_Query_van_ged_1"
code
next datum
 
Excel is een spreadsheet en geen database. Het doorlopen van de range zoals ik al liet zien zal andere waarden opleveren als je die structuur om zeep gaat helpen door er een kolom aan toe te voegen als dat niet rechts van de huidige range is. Een SQL query veranderd daar niets aan. Ook dan ben je van een vooraf bepaalde structuur en naamgeving afhankelijk.
 
Hier heb je een punt... maar het kon zijn dat het wel kon en als ik het dan niet zou gebruiken zou wel spijtig zijn.

Merci voor je reactie...
 
Wat wel zou kunnen is dat je een soort van administratie opstelt van welke waarde in welke kolom te vinden is. De VBA kan dan de structuur behandelen aan de hand van van de in die administratie opgestelde structuur. Als er dan een kolom tussenin wordt bijgevoegd hoef je alleen die administratie aan te passen en niks in de code te doen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan