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

'disjoint named range' gebruiken in VBA

Status
Niet open voor verdere reacties.

Wieltje

Gebruiker
Lid geworden
11 nov 2007
Berichten
17
Excuses voor de engelse titel; ik kon even geen duidelijke Nederlandse term bedenken die de lading dekt.

De situatie: ik heb enkele namen gedefinieerd in mijn werkblad, waar ik met de volgende VBA code doorheen loop
Code:
set rng = ActiveWorkbook.Names("mijnrange").RefersToRange
aantal = rng.Rows.Count
For each rij In rng
    'doe iets met de rij
next

Dit werkt goed, maar nu het probleem: wanneer ik dit probeer uit te voeren op een gedefinieerde naam die uit losse delen bestaat (bv =Blad1!$A$1:$A$2;Blad1!$A$4:$A$5), dan werkt het niet meer (fout 1004).

Wie o wie weet hoe ik dit werkend kan krijgen met een zgn 'disjoint naam'?
 
Probeer het eens als volgt:
Code:
For each ... in rng.Areas
For each rij In ...
    'doe iets met de rij
next
next
 
Dat werkt helaas niet, het gaat al fout bij de eerste regel (set rng = ActiveWorkbook.Names("mijnrange").RefersToRange)
 
Code:
Sub tst()
Dim cl As Range, ar
For Each ar In Range("mijnrange").Areas
For Each cl In ar
'doe iets

Next
Next
End Sub
 
Dat werkt inderdaad. Hartelijk dank!

Gezien de codeaanvulling geen resultaat geeft op range("mijnrange").are had ik dit nog niet daadwerkelijk geprobeerd.
Blijkbaar niet goed op zitten letten :)
 
Laatst bewerkt:
Nog een aanvullende vraag hierop:

Is er misschien ook een eenvoudige methode om te voorkomen (of in ieder geval te detecteren) dat rijen hier vaker dan één keer doorlopen worden (voor het geval "mijnrange" bijvoorbeeld A1:A3,B2:B4 beslaat)?
 
Met de "For each" doorloop je elke cel van de range, ongeacht op welke rij die zich bevindt.
Hoe dit te verhinderen: geen idee.
 
En dan ?
Wat wil je dan met die rij ?
Als die aktie al is uitgevoerd kun je op die eigenschap van de rij testen. (maar het nut ervan ontgaat me.)
 
Laatst bewerkt:
Is er misschien ook een eenvoudige methode om te voorkomen (of in ieder geval te detecteren) dat rijen hier vaker dan één keer doorlopen worden (voor het geval "mijnrange" bijvoorbeeld A1:A3,B2:B4 beslaat)?
Je zou in een collectie bij kunnen houden welke rijen al een behandeling hebben gekregen. Als een rij in de collectie zit sla je hem over.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan