- Tham gia
- 17/8/08
- Bài viết
- 8,662
- Được thích
- 16,718
- Giới tính
- Nam
Anh kết hợp thêm sự kiện UserForm_MouseMove khi dùng sự kiện CommandButton_MouseMove là ok.Tôi muốn tạo hiệu ứng cho các nút lệnh trong Form, khi rê chuột qua một nút nào đó thì màu của nút lệnh đó thay đổi, khi rê chuột qua chỗ khác thì nút lệnh đó trở lại như ban đầu.
Nhờ các cao thủ hướng dẫn giúp tôi hiệu ứng này!
Xin trân trọng cảm ơn.
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
CommandButton1.BackColor = RGB(0, 255, 0)
End Sub
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
CommandButton1.BackColor = RGB(255, 0, 0)
End Sub
Đương nhiên ta sẽ dùng thêm sự kiện UserForm_MouseMove để thay đổi màu. Có điều nếu dùng theo cách bình thường thì bạn sẽ thấy khi ra chuột vào UserForm hoặc CommandButton, màu sắc bị giật giật rất khó chịuTôi muốn tạo hiệu ứng cho các nút lệnh trong Form, khi rê chuột qua một nút nào đó thì màu của nút lệnh đó thay đổi, khi rê chuột qua chỗ khác thì nút lệnh đó trở lại như ban đầu.
Nhờ các cao thủ hướng dẫn giúp tôi hiệu ứng này!
Xin trân trọng cảm ơn.
Private Chk As Boolean
Private Sub UserForm_Initialize()
Chk = True
End Sub
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Chk Then
With CommandButton1
.BackColor = 255: .ForeColor = 65535
End With
Chk = False
End If
End Sub
Private Sub CommandButton2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Chk Then
With CommandButton2
.BackColor = 255: .ForeColor = 65535
End With
Chk = False
End If
End Sub
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Chk = False Then
CommandButton1.BackColor = -2147483633: CommandButton1.ForeColor = 16711680
CommandButton2.BackColor = -2147483633: CommandButton2.ForeColor = 16711680
Chk = True
End If
End Sub
Đương nhiên ta sẽ dùng thêm sự kiện UserForm_MouseMove để thay đổi màu. Có điều nếu dùng theo cách bình thường thì bạn sẽ thấy khi ra chuột vào UserForm hoặc CommandButton, màu sắc bị giật giật rất khó chịu
Tôi có cách này:
PHP:Private Chk As Boolean Private Sub UserForm_Initialize() Chk = True End Sub
PHP:Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Chk Then With CommandButton1 .BackColor = 255: .ForeColor = 65535 End With Chk = False End If End Sub
PHP:Private Sub CommandButton2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Chk Then With CommandButton2 .BackColor = 255: .ForeColor = 65535 End With Chk = False End If End Sub
Thử xem, sẽ thấy sự thay đổi màu sắc qua lại rất là... mượtPHP:Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Chk = False Then CommandButton1.BackColor = -2147483633: CommandButton1.ForeColor = 16711680 CommandButton2.BackColor = -2147483633: CommandButton2.ForeColor = 16711680 Chk = True End If End Sub
em muốn dùng hiệu ứng này cho công trình riêng của em mà hình như khong dùng được vì khi gán lệnh vào button thì mới chỉ rê chuột qua button là nó đã thực hiện lệnh rồi dù chưa muốn.
anh có thể cho em 1 ví dụ được không
nút thoát chẳng hạn
Private Sub CommandButton1_Click()
Unload Me
End Sub
sư huynh hiểu sai rồi/ ý em là vừa là lệnh thoát vừa làm đổi màu được nút lệnh đó khi chuột rê ngang qua kìa chứ lệnh thoát em biết màMới học VBA hả đồng chí? Xem file nhé!
Nút lệnh thoát chỉ như vầy:
PHP:Private Sub CommandButton1_Click() Unload Me End Sub
sư huynh hiểu sai rồi/ ý em là vừa là lệnh thoát vừa làm đổi màu được nút lệnh đó khi chuột rê ngang qua kìa chứ lệnh thoát em biết mà
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If CommandButton1.BackColor = &H8000000F Then CommandButton1.BackColor = &H8000000D
End Sub
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If CommandButton1.BackColor <> &H8000000F Then CommandButton1.BackColor = &H8000000F
End Sub
rất cảm ơn sư huynh đã chỉ bảo tận tình. đệ sẽ cố gắng áp dụng vào mục đích của mìnhBạn chọn thêm 1 sự kiện MouseMove cho Nút lệnh và cho Form như sau:
Với Nút Lệnh:
PHP:Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If CommandButton1.BackColor = &H8000000F Then CommandButton1.BackColor = &H8000000D End Sub
Với Form:
PHP:Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If CommandButton1.BackColor <> &H8000000F Then CommandButton1.BackColor = &H8000000F End Sub
Bạn thử xem file nhé!
anh Nghĩa ơi cho em hỏi thêm vấn đề này nữaBạn chọn thêm 1 sự kiện MouseMove cho Nút lệnh và cho Form như sau:
Với Nút Lệnh:
PHP:Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If CommandButton1.BackColor = &H8000000F Then CommandButton1.BackColor = &H8000000D End Sub
Với Form:
PHP:Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If CommandButton1.BackColor <> &H8000000F Then CommandButton1.BackColor = &H8000000F End Sub
Bạn thử xem file nhé!
anh Nghĩa ơi cho em hỏi thêm vấn đề này nữa
Nếu ta đặt chế độ BackStyle là 0- trong Properties của CommandButton1 thì chế độ đổi màu của Button khi chuột rê ngang qua sẽ bị vô hiệu hoá. Vậy có cách nào khắc phục được không anh. Em đang định làm Form điều khiển bảng tính giống như màn hình destop và các icon trong suốt đó anh.
Anh chỉ giúp em với nhé, em cảm ơn nhiều
Đây là vấn đề không khả thi, sao không thấy AC nào cho ý kiến vậy????????