Robert C
Robert C

Reputation: 1

How to display listbox results in a textbox?

I have a listbox that draws information from a table in sheet 3. It then allows me to select one item on the listbox, then have the rest of the row show in a textbox above the listbox grid.

The code below will work, but would have a problem if there were a lot of items in the table. I need some assistance in creating a loop program that doesn't require multiple copy and paste of the code.

The way I tried was to use the listbox as an array.

The userform
enter image description here

Private Sub ListBoxSearchResults_Click()
Worksheets("Stock Data").Activate
'Verify that an item was selected
    If ListBoxSearchResults.ListIndex = -1 Then
         'If ListIndex is -1, nothing selected
        MsgBox "Nothing was selected!"
        
    Else
        If frmProductSearch.ListBoxSearchResults.Selected(0) = True Then
        TextBoxDate.Value = Worksheets("Product Search").Range("a2")
        TextBoxDistance.Value = Worksheets("Product Search").Range("b2")
        TextBoxType.Value = Worksheets("Product Search").Range("c2")
        TextBoxElevation.Value = Worksheets("Product Search").Range("D2")
        TextBoxHeartRate.Value = Worksheets("Product Search").Range("e2")
        TextBoxPower.Value = Worksheets("Product Search").Range("f2")
        TextBoxCalories.Value = Worksheets("Product Search").Range("g2")
        TextBoxPowerOther = Worksheets("Product Search").Range("h2")
        TextBoxCaloriesSpeed = Worksheets("Product Search").Range("i2")
        
    Else
        If frmProductSearch.ListBoxSearchResults.Selected(1) = True Then
        TextBoxDate.Value = Worksheets("Product Search").Range("a3")
        TextBoxDistance.Value = Worksheets("Product Search").Range("b3")
        TextBoxType.Value = Worksheets("Product Search").Range("c3")
        TextBoxElevation.Value = Worksheets("Product Search").Range("D3")
        TextBoxHeartRate.Value = Worksheets("Product Search").Range("e3")
        TextBoxPower.Value = Worksheets("Product Search").Range("f3")
        TextBoxCalories.Value = Worksheets("Product Search").Range("g3")
        TextBoxPowerOther = Worksheets("Product Search").Range("h3")
        TextBoxCaloriesSpeed = Worksheets("Product Search").Range("i3")
        
    Else
        If frmProductSearch.ListBoxSearchResults.Selected(2) = True Then
        TextBoxDate.Value = Worksheets("Product Search").Range("a4")
        TextBoxDistance.Value = Worksheets("Product Search").Range("b4")
        TextBoxType.Value = Worksheets("Product Search").Range("c4")
        TextBoxElevation.Value = Worksheets("Product Search").Range("D4")
        TextBoxHeartRate.Value = Worksheets("Product Search").Range("e4")
        TextBoxPower.Value = Worksheets("Product Search").Range("f4")
        TextBoxCalories.Value = Worksheets("Product Search").Range("g4")
        TextBoxPowerOther = Worksheets("Product Search").Range("h4")
        TextBoxCaloriesSpeed = Worksheets("Product Search").Range("i4")
        
    Else
        If frmProductSearch.ListBoxSearchResults.Selected(3) = True Then
        TextBoxDate.Value = Worksheets("Product Search").Range("a5")
        TextBoxDistance.Value = Worksheets("Product Search").Range("b5")
        TextBoxType.Value = Worksheets("Product Search").Range("c5")
        TextBoxElevation.Value = Worksheets("Product Search").Range("D5")
        TextBoxHeartRate.Value = Worksheets("Product Search").Range("e5")
        TextBoxPower.Value = Worksheets("Product Search").Range("f5")
        TextBoxCalories.Value = Worksheets("Product Search").Range("g5")
        TextBoxPowerOther = Worksheets("Product Search").Range("h5")
        TextBoxCaloriesSpeed = Worksheets("Product Search").Range("i5")
        
    Else
        If frmProductSearch.ListBoxSearchResults.Selected(4) = True Then
        TextBoxDate.Value = Worksheets("Product Search").Range("a6")
        TextBoxDistance.Value = Worksheets("Product Search").Range("b6")
        TextBoxType.Value = Worksheets("Product Search").Range("c6")
        TextBoxElevation.Value = Worksheets("Product Search").Range("D6")
        TextBoxHeartRate.Value = Worksheets("Product Search").Range("e6")
        TextBoxPower.Value = Worksheets("Product Search").Range("f6")
        TextBoxCalories.Value = Worksheets("Product Search").Range("g6")
        TextBoxPowerOther = Worksheets("Product Search").Range("h6")
        TextBoxCaloriesSpeed = Worksheets("Product Search").Range("i6")
        
    Else
        If frmProductSearch.ListBoxSearchResults.Selected(5) = True Then
        TextBoxDate.Value = Worksheets("Product Search").Range("a7")
        TextBoxDistance.Value = Worksheets("Product Search").Range("b7")
        TextBoxType.Value = Worksheets("Product Search").Range("c7")
        TextBoxElevation.Value = Worksheets("Product Search").Range("D7")
        TextBoxHeartRate.Value = Worksheets("Product Search").Range("e7")
        TextBoxPower.Value = Worksheets("Product Search").Range("f7")
        TextBoxCalories.Value = Worksheets("Product Search").Range("g7")
        TextBoxPowerOther = Worksheets("Product Search").Range("h7")
        TextBoxCaloriesSpeed = Worksheets("Product Search").Range("i7")
        
         Else
        If frmProductSearch.ListBoxSearchResults.Selected(6) = True Then
        TextBoxDate.Value = Worksheets("Product Search").Range("a8")
        TextBoxDistance.Value = Worksheets("Product Search").Range("b8")
        TextBoxType.Value = Worksheets("Product Search").Range("c8")
        TextBoxElevation.Value = Worksheets("Product Search").Range("D8")
        TextBoxHeartRate.Value = Worksheets("Product Search").Range("e8")
        TextBoxPower.Value = Worksheets("Product Search").Range("f8")
        TextBoxCalories.Value = Worksheets("Product Search").Range("g8")
        TextBoxPowerOther = Worksheets("Product Search").Range("h8")
        TextBoxCaloriesSpeed = Worksheets("Product Search").Range("i8")
        
    Else
        If frmProductSearch.ListBoxSearchResults.Selected(7) = True Then
        TextBoxDate.Value = Worksheets("Product Search").Range("a9")
        TextBoxDistance.Value = Worksheets("Product Search").Range("b9")
        TextBoxType.Value = Worksheets("Product Search").Range("c9")
        TextBoxElevation.Value = Worksheets("Product Search").Range("D9")
        TextBoxHeartRate.Value = Worksheets("Product Search").Range("e9")
        TextBoxPower.Value = Worksheets("Product Search").Range("f9")
        TextBoxCalories.Value = Worksheets("Product Search").Range("g9")
        TextBoxPowerOther = Worksheets("Product Search").Range("h9")
        TextBoxCaloriesSpeed = Worksheets("Product Search").Range("i9")
        
    Else
        If frmProductSearch.ListBoxSearchResults.Selected(8) = True Then
        TextBoxDate.Value = Worksheets("Product Search").Range("a10")
        TextBoxDistance.Value = Worksheets("Product Search").Range("b10")
        TextBoxType.Value = Worksheets("Product Search").Range("c10")
        TextBoxElevation.Value = Worksheets("Product Search").Range("D10")
        TextBoxHeartRate.Value = Worksheets("Product Search").Range("e10")
        TextBoxPower.Value = Worksheets("Product Search").Range("f10")
        TextBoxCalories.Value = Worksheets("Product Search").Range("g10")
        TextBoxPowerOther = Worksheets("Product Search").Range("h10")
        TextBoxCaloriesSpeed = Worksheets("Product Search").Range("i10")
        
    Else
        If frmProductSearch.ListBoxSearchResults.Selected(9) = True Then
        TextBoxDate.Value = Worksheets("Product Search").Range("a11")
        TextBoxDistance.Value = Worksheets("Product Search").Range("b11")
        TextBoxType.Value = Worksheets("Product Search").Range("c11")
        TextBoxElevation.Value = Worksheets("Product Search").Range("D11")
        TextBoxHeartRate.Value = Worksheets("Product Search").Range("e11")
        TextBoxPower.Value = Worksheets("Product Search").Range("f11")
        TextBoxCalories.Value = Worksheets("Product Search").Range("g11")
        TextBoxPowerOther = Worksheets("Product Search").Range("h11")
        TextBoxCaloriesSpeed = Worksheets("Product Search").Range("i11")
        

Upvotes: 0

Views: 226

Answers (1)

Christofer Weber
Christofer Weber

Reputation: 1474

Do you need to loop through all of .Selected ? Seems easier to use ListIndex like in the first check. Then we don't need to loop at all, just pick the index, and offset it by 2 to get the row.

Private Sub ListBoxSearchResults_Click()
Dim lIndex As Long
lIndex = frmProductSearch.ListBoxSearchResults.listIndex

Worksheets("Stock Data").Activate 'Verify that an item was selected
If lIndex = -1 Then 'If ListIndex is -1, nothing selected
    MsgBox "Nothing was selected!"
Else
    TextBoxDate.Value = Worksheets("Product Search").Range("a" & lIndex + 2)
    TextBoxDistance.Value = Worksheets("Product Search").Range("b" & lIndex + 2)
    TextBoxType.Value = Worksheets("Product Search").Range("c" & lIndex + 2)
    TextBoxElevation.Value = Worksheets("Product Search").Range("D" & lIndex + 2)
    TextBoxHeartRate.Value = Worksheets("Product Search").Range("e" & lIndex + 2)
    TextBoxPower.Value = Worksheets("Product Search").Range("f" & lIndex + 2)
    TextBoxCalories.Value = Worksheets("Product Search").Range("g" & lIndex + 2)
    TextBoxPowerOther = Worksheets("Product Search").Range("h" & lIndex + 2)
    TextBoxCaloriesSpeed = Worksheets("Product Search").Range("i" & lIndex + 2)
End If
End Sub

If you HAVE to loop through them all, you should be able to use do something like:

Private Sub ListBoxSearchResults_Click()
Dim i As Long

Worksheets("Stock Data").Activate 'Verify that an item was selected
If frmProductSearch.ListBoxSearchResults.listIndex = -1 Then 'If ListIndex is -1, nothing selected
    MsgBox "Nothing was selected!"
Else
    For i = 0 To frmProductSearch.ListBoxSearchResults.ListCount
        If frmProductSearch.ListBoxSearchResults.Selected(i) = True Then
            TextBoxDate.Value = Worksheets("Product Search").Range("a" & i + 2)
            TextBoxDistance.Value = Worksheets("Product Search").Range("b" & i + 2)
            TextBoxType.Value = Worksheets("Product Search").Range("c" & i + 2)
            TextBoxElevation.Value = Worksheets("Product Search").Range("D" & i + 2)
            TextBoxHeartRate.Value = Worksheets("Product Search").Range("e" & i + 2)
            TextBoxPower.Value = Worksheets("Product Search").Range("f" & i + 2)
            TextBoxCalories.Value = Worksheets("Product Search").Range("g" & i + 2)
            TextBoxPowerOther = Worksheets("Product Search").Range("h" & i + 2)
            TextBoxCaloriesSpeed = Worksheets("Product Search").Range("i" & i + 2)
        End If
    Next i
End If
End Sub

Upvotes: 1

Related Questions