Вот простой пример для перетаскивания кнопки с именем Command1. Чтобы ограничить расстояние, которое он может перемещать, просто добавьте некоторые условия в событие DragOver:
Dim blnDrag As Boolean
Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Not blnDrag Then
blnDrag = True
Command1.Drag
End If
End Sub
Private Sub Command1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Command1.DragMode = vbnone
blnDrag = False
End Sub
Private Sub Form_DragOver(Source As Control, X As Single, Y As Single, State As Integer)
Command1.Left = X
End Sub
Private Sub Form_Load()
Command1.DragMode = vbManual
End Sub