Ok, then try this one ... it is a little tricky because you are not validating the selection of the item. This can present a problem in multiple selection listboxes because the previous or next item may have been select and programmatically the only way to find out if it was selected is to check the entire list and compare it against a previous list.
Anyway, In my programming I have found that the number that most closely represents the number in Y coordinates in a list box is 9.75 per item.
So, to check which was selected you would do this:
Private Sub ListBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim SelectedItem As Long
SelectedItem = Fix(Y / 9.75) + ListBox1.TopIndex
If (Button = 1) And (SelectedItem < ListBox1.ListCount) Then
'do your initialization here
End If
End Sub
Essentially we are grabbing the Y coordinate and dividing it by 9.75, that will give us a number that is close to the index count. We will then "fix" that number and then find that item in the list.
There may be a more elegant way of determining the index to select, by using rounding, but this works for me 99.9% of the time.