View Single Post
  #9   Report Post  
Posted to microsoft.public.excel.programming
Dave Birley Dave Birley is offline
external usenet poster
 
Posts: 171
Default Build Select Case Programmatically

Well now my strSearchList, which looks like this:

""PN2", "HOL", "REG""

has the quotes and commas in the right place, but the "Case strSearchList"
expression expects there to be no wrapper quotes around it. Yaaargh!
--
Dave
Temping with Staffmark
in Rock Hill, SC


"Philip" wrote:

try this:

If Len(strSearchList) = 0 Then 'Have to create a "legal" list
strSearchList = strSearchList & """ & strCodes(intI) & """ 'First one
Else
strSearchList = strSearchList & """" & ", " & """ + strCodes(intI) &
""" '..all others need the comma separator
End If

you were missing a quote.

What I do is place the quote in a variable using chr(34)

HTH

Philip

"Dave Birley" wrote:

Tried this:

If Len(strSearchList) = 0 Then 'Have to create a "legal" list
strSearchList = strSearchList & """ & strCodes(intI) & """ 'First one
Else
strSearchList = strSearchList & """ & ", " & """ + strCodes(intI) &
""" '..all others need the comma separator
End If

..and it didn't work either -- told me it was looking for an end of
statement on the Else guy.
--
Dave
Temping with Staffmark
in Rock Hill, SC


"JLGWhiz" wrote:

Dave, I just took a quick look at your code and noticed you are using + for a
concatenate symbol. You would be better off using &. The + symbol
sometimes causes problems because your variables will try to add
mathematically instead of conactenate.

"Dave Birley" wrote:

Ronald Dodge gave me this in his answer to my warlier question about InList():

Select Case rngCell.Value
Case "PEN-Pensionable Earnings","Pen2-Pension Plan Charlotte Hyl
HN2","TSP-Textron Savings Plan"

Which I did, and it works perfectly for my purposes -- in fact, back in my
VFP environment I was a big fan of Case statements. However my need here is
to build the case expression programmatically, because on various passes
through a large For..Next Loop, the contents of the needed selection will
vary based on what is found on the current WS.

Here's what I've been doing:

For Each rngWorkCell In Range("K" & lngFoundRow, "K" & lngFoundRow +
lngCount)
For intI = LBound(blnCodes) To UBound(blnCodes) 'Step through the Codes
If blnCodes(intI) Then 'If it's still True, then we need to add it to
the search list
If Left(rngWorkCell, 3) = strCodes(intI) Then 'Matches the Code, Add
it to the list
If Len(strSearchList) = 0 Then 'Have to create a "legal" list
strSearchList = strSearchList + strCodes(intI) 'First one
Else
strSearchList = strSearchList + ", " + strCodes(intI) '..all others
need the comma separator
End If
blnCodes(intI) = False 'Turn off the flag so we don't use this guy
again on the Sheet
End If
End If
Next intI 'Get another Code

..prior to firing off

Select Case Left(rngSubCountCell.Value, 3)
Case strSearchList

Now, by running a creful Debug, I have learned that the case expression
looks like:

Case "PN2, OT-, REG"

..which, of course, guarantees the Case will never be found.

How can I build that list into a variable so that it delivers this:

Case "PN2", "OT-", "REG"

???
--
Dave
Temping with Staffmark
in Rock Hill, SC