pues mira, una opción bastante sencilla pero que no es la mejor sería la siguiente:
Dentro del evento MouseMove del listbox
Private Sub List1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
' Verifica la Posición vertical dentro del control. El 195 es el alto de cada
' Renglón, así que si multiplicas el 195 por la posición, tendrás el no. de
' elemento sobre el que te encuentras, solo falta checar que te
' encuentres encima de un elemento válido y no solo sobre un área
' libre del control
If (Y < List1.ListCount * 195) Then
List1.ListIndex = Y \ 195
End If
End Sub
Esto tiene el inconveniente que si cambias el tipo de letra o el tamaño, pues ya no te funcionaría porque tendrías que volver a hacer los cálculos para ver el alto de cada renglón ( en este caso es 195 )
Pero espero que te sirva para empezar