Allora...togli "Label1.Caption = List1.List(List1.ListIndex)" dal mouseup (è qua che ti prende il 3 come listindex, mentre nel mousedown ti prende il 1°, te visualizzi il 3 per il semplice motivo che il mouseup avviene subito dopo...)
Ti spiego come fare, in poche parole: Salvi l'index nel mousedown, dopo di che quando avviene il mouseup reimposti il listindex in base a quello che avevi salvato. Ti posto un esempio:
codice:
Option Explicit
Dim Ind As Integer
Private Sub Form_Load()
List1.AddItem "1"
List1.AddItem "2"
List1.AddItem "3"
End Sub
Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Ind = List1.ListIndex
End Sub
Private Sub List1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
List1.ListIndex = Ind
End Sub