Sure thing.

Code:
Private Type POINTAPI
   X As Long
   Y As Long
End Type
Private Declare Function LBItemFromPt Lib "comctl32.dll" (ByVal hwnd As Long, ByVal ptx As Long, ByVal pty As Long, ByVal bAutoScroll As Long) As Long
Private Declare Function ClientToScreen Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long

Private Sub List1_DragDrop(Source As Control, X As Single, Y As Single)
    Dim intCurItem As Long
    Dim pt As POINTAPI
    Dim strItem As String
    
    
    pt.X = X \ Screen.TwipsPerPixelX
    pt.Y = Y \ Screen.TwipsPerPixelY
    Call ClientToScreen(List1.hwnd, pt)
    intCurItem = LBItemFromPt(List1.hwnd, pt.X, pt.Y, False)
    If intCurItem > -1 Then
        strItem = List1.List(List1.ListIndex)
        List1.RemoveItem List1.ListIndex
        List1.AddItem strItem, intCurItem
    End If
End Sub

Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = vbLeftButton Then
        List1.Drag vbBeginDrag
    End If
End Sub
Make sure you set the DragIcon property to the apropriate cursor.