- Tham gia
- 17/8/08
- Bài viết
- 8,662
- Được thích
- 16,725
- 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????????
Vậy Thầy Tuân thử làm cho các Anh em học hỏi với!!!!!!!
Trong thời gian chờ a Tuân rảnh bạn xem file này có đúng ý không?
Em thấy nếu sử dụng sự kiện click chuột vào Image1 mới hiện frame và move đến đâu ảnh chuyển tới đó thì có vẻ mịn hơn. Song đó cũng là 1 phương pháp dùng Frame kết hợp với ImageMình cũng nghĩ ý tưởng là làm thế nhưng chắc phải xem lại cách giải quyết khác vì tốc độ chạy chậm, không mịn.
Em thấy nếu sử dụng sự kiện click chuột vào Image1 mới hiện frame và move đến đâu ảnh chuyển tới đó thì có vẻ mịn hơn. Song đó cũng là 1 phương pháp dùng Frame kết hợp với Image
Không biết còn phương pháp nào khác nữa không anh?
File này cũng giống như file bài #27 của dhn46 chứ khác gì mấy đâu bạn?Em có sưu tầm File này trên Google, khi phóng to ảnh lên 1,5->3,0 thì ảnh bị bể hình(Chác tại do chất lượng Ảnh) Chỉ có phóng to ảnh ở cấp độ 1 thì được. Em xin đưa File lên để mọi người tham khảo(Chờ Thầy Tuân lập trình API)(Thanks Andy Pope)
Kinh nghiệm của hai nước cũng là bài học cho thế giới. Trong bối cảnh thế giới đang có nhiều xung đột tưởng như bất trị, không dứt. chúng ta đã chứng minh trái tim có thể thay đổi, tương lai sẽ khác nếu ta từ chối làm tù nhân của quá khứ, hòa bình tốt đẹp hơn chiến tranh rất nhiều. Rằng tiến bộ và phẩm giá con người sẽ được phát huy tốt nhất qua hợp tác chứ không phải xung đột.
Các anh chị có thể giúp em tạo Class Module để tất cả các CommandButton trong file với tên bất kỳ có thể thực hiện được lệnh này không ạ (Ví dụ file em có nhiều Form và nhiều Button)Đươ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
Làm ơn giúp để khi bấm vào các nút (hyperlink đến các sheet) thì nó sẽ chuyển thành màu vàng, nghĩa là nếu đang đứng ở sheet nào thì nút đó trở thành màu vàng. Xin cảm ơn cả nhà