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

ParamArray van Variant naar Boolean

Status
Niet open voor verdere reacties.

WinteE

Gebruiker
Lid geworden
20 dec 2006
Berichten
423
Mede forummers,

Ik ben al een tijdje bezig om met behulp van een ParamArray een aantal condities in één functie te krijgen. Het resultaat tot nu toe is te zien in het bijgevoegde bestand.

In het bestand wordt de functie tweemaal gebruikt, een keer met een range en een keer met een rangecriterium. De eerste functie levert het gewenste resultaat, welke bestaat uit nullen en enen die hard in de range staan. De tweede functie zou ook nullen en enen moeten genereren op basis van WAAR/ONWAAR, wanneer de functie met de wizard wordt geopend wordt het gewenste resultaat ook als uitkomst getoond maar de celwaarde is #WAARDE.

Is er een manier om de variant type array om te zetten naar een boolean type ?

Erik
 

Bijlagen

Laatst bewerkt:
Erik, een echte oplossing heb ik nog niet voor je. Maar als je je code stap voor stap doorloopt, zie je dat je variabele 'vItem' een error veroorzaakt (2015). Hiermee klapt tie er al direct bij de 1e 'for...each' uit.

Wat is trouwens het 'verwachte resultaat' bij deze test?
Code:
=Test(N(A1:A6=A10))

Groet, Leo
 
Ha Leo,

Het feit dat de code er op vItem uitklapt heeft er mee te maken dat de range die met bereik wordt opgehaald een gegevenstype Boolean is. Voor het gebruik van ParamArray is het gegevenstype Variant vereist, vandaar dat in het werkblad de functie N() wordt gebruikt (converteert TRUE/FALSE naar 1/0).

Een en ander om range en criterium niet gescheiden op te hoeven vragen, op de manier zoals dit in een SOMPRODUCT gebruikt wordt.

Groet,
Erik
 
Erik, Sorry mijn kennis reikt niet verder dan dit...:rolleyes:
Code:
Public Function Test1(Testen As String, ParamArray Bereik() As Variant) As String

Dim vItem As Variant
Dim rngCell As Variant

    For Each vItem In Bereik
        For Each rngCell In vItem
            sPrint = sPrint & -(Testen = rngCell)
        Next rngCell
    Next vItem
    
    Test1 = sPrint

End Function
Maar goed... dat is dus inderdaad met een EXTRA celverwijzing in je formule (functie). En da's nou volgens mij nou net niet wat je wilt (het werkt trouwens wel!).

Om misschien toch ff te kijken wat ik heb gedaan geef je de volgende formule in cel C10
Code:
=Test1(A10;A1:A6)
Als resultaat krijg je dan in iedergeval het gewenste: 001001...:D

Voor verdere hulp ben je nu vrees ik op andere 'helpmij-ers' aangewezen...

Groet, Leo
 
Erik, ik vond nog een leuke link over ParamArray's. Misschien dat je hier nog wat extra leerzame info kan vinden...

Groet, Leo
 
Volgens mij moet je C10 ingeven als een matrixformule, dus Ctrl-Shift-Enter. Ik krijg in ieder geval dan wel hetzelfde resultaat.

Wigi
 
Wigi, Klasse gevonden zeg!:thumb: :thumb: Wat is het leven toch simpel als je 't ff ziet...:D

Groet, Leo
 
Leo, Wim,

Bedankt voor jullie respons, hier kom ik weer een stuk verder mee ! :thumb:

Groet,
Erik
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan