ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Setting a Control Variable for a listbox (https://www.excelbanter.com/excel-programming/405575-setting-control-variable-listbox.html)

jonefer

Setting a Control Variable for a listbox
 
I want to be able to use different listbox controls with this function, but I
don't know how to set the name of the listbox so that it can be variable for
the routine: The routine completly works if I were to replace LB (in the
body) with the name of the listbox

Here is my function : (I have placed ??? where I am unsure)

Private Function BuildWhereCondition(LB As Listbox???) As String
'Set up the WhereCondition Argument for the reports

Dim strWhere As String
Dim lSelectedCount As Long
Dim i As Variant 'The index of whatever they select

set LB = ????


lSelectedCount = 0
'MsgBox "listcount -1 " & lb.ListCount - 1

For x = 0 To LB.ListCount - 1
If LB.Selected(x) = True Then
lSelectedCount = lSelectedCount + 1
i = x
End If

Next x



Select Case lSelectedCount

Case 0 'Include All
strWhere = ""
Case 1 'Only One Selected
strWhere = "= '" & LB.List(i) & "'"
' MsgBox strWhere
Case Else 'Multiple Selection
strWhere = " IN ("


For x = 0 To LB.ListCount - 1
If LB.Selected(x) = True Then
strWhere = strWhere & "'" & LB.List(x) & "', "
End If
Next x

strWhere = Left(strWhere, Len(strWhere) - 2) & ")"

End Select

BuildWhereCondition = strWhere

End Function

Dave Peterson

Setting a Control Variable for a listbox
 
Is this a listbox from the Control toolbox toolbar (placed on a worksheet) or a
listbox on a userform?

If yes to either:
Private Function BuildWhereCondition(LB As MsForms.Listbox) As String

Using this:
Private Function BuildWhereCondition(LB As Listbox) As String
means that you want to pass a listbox (on a worksheet) from the Forms toolbar.




jonefer wrote:

I want to be able to use different listbox controls with this function, but I
don't know how to set the name of the listbox so that it can be variable for
the routine: The routine completly works if I were to replace LB (in the
body) with the name of the listbox

Here is my function : (I have placed ??? where I am unsure)

Private Function BuildWhereCondition(LB As Listbox???) As String
'Set up the WhereCondition Argument for the reports

Dim strWhere As String
Dim lSelectedCount As Long
Dim i As Variant 'The index of whatever they select

set LB = ????

lSelectedCount = 0
'MsgBox "listcount -1 " & lb.ListCount - 1

For x = 0 To LB.ListCount - 1
If LB.Selected(x) = True Then
lSelectedCount = lSelectedCount + 1
i = x
End If

Next x

Select Case lSelectedCount

Case 0 'Include All
strWhere = ""
Case 1 'Only One Selected
strWhere = "= '" & LB.List(i) & "'"
' MsgBox strWhere
Case Else 'Multiple Selection
strWhere = " IN ("

For x = 0 To LB.ListCount - 1
If LB.Selected(x) = True Then
strWhere = strWhere & "'" & LB.List(x) & "', "
End If
Next x

strWhere = Left(strWhere, Len(strWhere) - 2) & ")"

End Select

BuildWhereCondition = strWhere

End Function


--

Dave Peterson

jonefer

Setting a Control Variable for a listbox
 
It's funny. In preparing my code to put in the message, I serendipitously
fixed it!
I originally put in the listbox name in the body of hte code and used the
available properties that popped up with the dot (.)

I replaced the listbox name with LB and made my parameter 'LB as control'

Even though, control doesn't drop down the properties, if you pass a listbox
as the parmeter, it knows what to do with it.

Thanks for the tips.


"Dave Peterson" wrote:

Is this a listbox from the Control toolbox toolbar (placed on a worksheet) or a
listbox on a userform?

If yes to either:
Private Function BuildWhereCondition(LB As MsForms.Listbox) As String

Using this:
Private Function BuildWhereCondition(LB As Listbox) As String
means that you want to pass a listbox (on a worksheet) from the Forms toolbar.




jonefer wrote:

I want to be able to use different listbox controls with this function, but I
don't know how to set the name of the listbox so that it can be variable for
the routine: The routine completly works if I were to replace LB (in the
body) with the name of the listbox

Here is my function : (I have placed ??? where I am unsure)

Private Function BuildWhereCondition(LB As Listbox???) As String
'Set up the WhereCondition Argument for the reports

Dim strWhere As String
Dim lSelectedCount As Long
Dim i As Variant 'The index of whatever they select

set LB = ????

lSelectedCount = 0
'MsgBox "listcount -1 " & lb.ListCount - 1

For x = 0 To LB.ListCount - 1
If LB.Selected(x) = True Then
lSelectedCount = lSelectedCount + 1
i = x
End If

Next x

Select Case lSelectedCount

Case 0 'Include All
strWhere = ""
Case 1 'Only One Selected
strWhere = "= '" & LB.List(i) & "'"
' MsgBox strWhere
Case Else 'Multiple Selection
strWhere = " IN ("

For x = 0 To LB.ListCount - 1
If LB.Selected(x) = True Then
strWhere = strWhere & "'" & LB.List(x) & "', "
End If
Next x

strWhere = Left(strWhere, Len(strWhere) - 2) & ")"

End Select

BuildWhereCondition = strWhere

End Function


--

Dave Peterson



All times are GMT +1. The time now is 05:12 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com