Làm sao đổi màu nút lệnh khi chuột rê ngang qua?

Liên hệ QC

Hoàng Trọng Nghĩa

Chuyên gia GPE
Thành viên BQT
Moderator
Tham gia
17/8/08
Bài viết
8,662
Được thích
16,718
Giới tính
Nam
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.
 

File đính kèm

  • HieuUng.xls
    30.5 KB · Đọc: 136
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.
Anh kết hợp thêm sự kiện UserForm_MouseMove khi dùng sự kiện CommandButton_MouseMove là ok.
PHP:
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
 
Upvote 0
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.
Đươ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
PHP:
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
Thử xem, sẽ thấy sự thay đổi màu sắc qua lại rất là... mượt
 
Upvote 0
Đươ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
PHP:
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
Thử xem, sẽ thấy sự thay đổi màu sắc qua lại rất là... mượt

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.
 
Upvote 0
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.

Bạn chọn không đúng sự kiện nên mới bị vậy, lẽ ra bạn phải đặt thủ tục của bạn vào sự kiện Click mới đúng.
 
Upvote 0

File đính kèm

  • CommandButton.xls
    32.5 KB · Đọc: 112
Upvote 0
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à
 
Upvote 0
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à

Bạ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é!
 

File đính kèm

  • CommandButton.xls
    34.5 KB · Đọc: 165
Upvote 0
Bạ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é!
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ình
 
Upvote 0
Bạ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
 
Upvote 0
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

Bạn sử dụng thủ tục này:

[GPECODE=vb]Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If CommandButton1.BackStyle = fmBackStyleTransparent Then
CommandButton1.BackStyle = fmBackStyleOpaque
End If
End Sub
[/GPECODE]

Và thủ tục này:

[GPECODE=vb]Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If CommandButton1.BackStyle = fmBackStyleOpaque Then
CommandButton1.BackStyle = fmBackStyleTransparent
End If
End Sub
[/GPECODE]

Lưu ý, khi thiết kế nút lệnh, ta cứ chọn BackColor cho nó trước, sau đó mới cho nó trong suốt.
 

File đính kèm

  • CommandButton(1).xls
    37.5 KB · Đọc: 146
Upvote 0
Không biết phải nói gì để bày tỏ lời cảm anh ơn chân thành của em đến anh.
cảm ơn anh nhiều
 
Upvote 0
Các AC có thể dùng sự kiện "MouseMove" để Zoom image trong Form đươc không ah!!!!! (giống như các trang Web). Mong các AC cho ý kiến.
 
Upvote 0
Đây là vấn đề không khả thi, sao không thấy AC nào cho ý kiến vậy????????
 
Upvote 0
Upvote 0
Bài của Thầy Tuân là rê chuột vào commandbutton, thì đổi màu. Còn Ý của em là trong Form có hình(Image), khi rê chuột vào hình thì phóng to hình đó lên(như các trang Web bán điện thoại, khi rê chuột vào điện thoại thì điện thoại được phóng to lên)như link sau (trên Web)
http://sinhvienit.net/forum/code-html-hieu-ung-anh-khi-re-chuot-vao.246734.html#post1422466
nhưng làm trong Form VBA có được không Thầy Tuân????
 
Upvote 0
Mình nghĩ là được chứ chưa thử.
 
Upvote 0
Vậy Thầy Tuân thử làm cho các Anh em học hỏi với!!!!!!!
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom