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

Opbouwen string tbv Case-functie

Status
Niet open voor verdere reacties.

EdjeVis

Gebruiker
Lid geworden
22 nov 2006
Berichten
99
Goeiemiddag, wie kan/wil me weer eens op weg helpen?

Weet iemand hoe ik een string op kan bouwen, die ik kan gebruiken in de Case-functie?

De volgende regel gaat goed :
Code:
Select Case TaskCode
Case 40009, 40010, 10021, 40043, 40044, 40045, 40053, 40054, 40055, 40307, 40540, 4051, 40550, 40551
   ValidTaskcode = True
Case Else
   ValidTaskcode = False
End Select

Echter, omdat de codes die in dit statement worden gebruikt niet altijd hetzelfde zijn, wil ik ze niet hardcoded hebben.

Ik wil dus eigenlijk zoiets als (maar hiervoor zal een "nettere" manier zijn) :
Code:
For Each Row In Range("TCLK")
    ValidTaskCodeList = ValidTaskCodeList & ", " & ActiveCell.Value
    ActiveCell.Offset(1, 0).Activate
Next
Select Case TaskCode
Case ValidTaskCodeList
etc.

Om de eerste komma en spatie te verwijderen zet ik daarbij :
Code:
ValidTaskCodeList = Right(ValidTaskCodeList, (Len(ValidTaskCodeList) - 2))

Maar dan nog staan er dubbele aanhalingstekens aan het begin en eind van de hele reeks, dus "40009, 40010, 10021, 40043, 40044, 40045, 40053, 40054, 40055, 40307, 40540, 4051, 40550, 40551". En door die aanhalingstekens werkt 't allemaal niet meer.

Vraag is dus : óf hoe bouw ik de string dan wél op óf hoe krijg ik de waarde uit de variabele toch op de juiste manier in het Case-statement?

Bij voorbaat dank voor je moeite!
 
Laatst bewerkt:
Kan je niet gewoon voorwaardes verbinden naar de codes?
Ik bedoel in plaats van dat je precies aangeeft om welke codes het gaat, geef je aan dat de code kleiner of groter moet zijn dan een bepaalde waarde.
Of je gaat de gekozen code zoeken in een bepaald bereik.

Met vriendelijke groet,


Roncancio
 
Die eerste is weliswaar geen optie, omdat het niet één aaneengesloten nummerreeks is, maar de tweede optie is inderdaad simpelweg het beste.

De schoonheid zit 'm vaak in de eenvoud, niet waar?
En bedankt maar weer!
 
Dit kan met een one-liner:

Code:
if ubound(filter(worksheetfunction.transpose(range("TCLK").columns(1)),taskcode))>-1 then .......
of

Code:
if instr(join(worksheetfunction.transpose(range("TCLK").columns(1)),"|"),taskcode)>0 then...........
 
Goeie avond snb,
Leuk dat er op wordt doorgeborduurd. Zelf had ik 'm nav Roncancio's hint zo opgelost :
Code:
If WorksheetFunction.Rank(TaskCode, Range("TCLK")) > 0 Then
Maar bedankt voor het meedenken!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan