Đối với lập trình VBA, có lẽ không thể không nói tới Userform. Đây là nơi thiết kế nên giao diện cho một chương trình trông có vẻ bắt mắt và đẹp hơn.
Bài viết này mình chia sẻ với mọi người một đoạn code dùng để kéo thả label trên Userform.
Giải thích: Tọa độ Label được xác định thông qua hai thông số quan trọng là Left và Top.
Giả thiết ta click chuột và kéo tới vị trí Label màu vàng như hình vẽ dưới đây.
Lúc này ta cần tính lại Left và Top cho Label ở vị trí mới dựa vào tọa độ click chuột. Ngay khi ta click chuột ta được Left và Top tại vị trí click chuột là POST X và POST Y. Khi tới vị trí mới, vị trí ta nhả chuột cũng là nơi cuối cùng ta còn click chuột, lúc ấy tọa độ của chuột là X và Y.
Và như vậy công thức tọa độ mới cho label ở vị trí mới (màu vàng) được tính như ở code trên.
Bài viết này mình chia sẻ với mọi người một đoạn code dùng để kéo thả label trên Userform.
Bạn cần đăng nhập để thấy hình ảnh
Mã:
'Code cho Label 1:
Private PosX As Double, PosY As Double
Private Sub Label1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
PosX = X: PosY = Y
End Sub
Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Button > 0 Then 'Khi tay còn click chuột thì còn làm việc dưới đây
Me.Label1.Left = Me.Label1.Left + X - PosX 'PosX la vi tri cua con tro khi di chuyen, tinh toi mep trai Left
Me.Label1.Top = Me.Label1.Top + Y - PosY 'PosY la vi tri cua con tro khi di chuyen, tinh toi mep tren Top
End If
End Sub
Giả thiết ta click chuột và kéo tới vị trí Label màu vàng như hình vẽ dưới đây.
Lúc này ta cần tính lại Left và Top cho Label ở vị trí mới dựa vào tọa độ click chuột. Ngay khi ta click chuột ta được Left và Top tại vị trí click chuột là POST X và POST Y. Khi tới vị trí mới, vị trí ta nhả chuột cũng là nơi cuối cùng ta còn click chuột, lúc ấy tọa độ của chuột là X và Y.
Và như vậy công thức tọa độ mới cho label ở vị trí mới (màu vàng) được tính như ở code trên.
Bạn cần đăng nhập để thấy đính kèm