Vấn đề: Worksheet_Keydown() (1 người xem)

  • Thread starter Thread starter dhn46
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

dhn46

Hướng tới tương lai
Tham gia
1/3/11
Bài viết
3,251
Được thích
3,870
Trong các sự kiện của Worksheet em thấy không có sự kiện KeyDown hay KeyPress. Vậy có thể tạo được các sự kiện này không? Và tạo như thế nào ạ?

Mong các thầy cô, anh chị giải thích!
 
Hình như dùng cái này Application.OnKey
 
Upvote 0
Bác có thể cho em ví dụ: như là khi gõ 1 phím bất kỳ thì nó hiện thông báo cho phím đó ( keycode của Enter, tab, Backspace, Caplock...) Em mới biết sử dụng Application.Onkey để gọi 1 thủ tục
Bạn Copy code này cho vào 1 Module. Lưu file. Đóng file và mở ra xem kết quả khi bấm phím ENTER
PHP:
Sub test()
MsgBox "Ban vua go phim ENTER"
End Sub
Sub auto_open()
Application.OnKey "{ENTER}", "test"
Application.OnKey "~", "test"
End Sub
 
Upvote 0
Hay quá ạ, cảm ơn bác rất nhiều. Lại học thêm được 1 cái mới.
 
Upvote 0
Bác cho em thỉnh giáo thêm:
1 - Sử dụng: Application.OnKey "~", "test" để làm gì vậy, khi mà em thử không có Code này File vẫn chạy tốt
2 - Khi sử dụng Onkey thì có thể bắt KeyCode của tất cả các phím mình gõ vào như keydown không nếu không cần khai báo
"{ENTER}"
 
Upvote 0
Bác cho em thỉnh giáo thêm:
1 - Sử dụng: Application.OnKey "~", "test" để làm gì vậy, khi mà em thử không có Code này File vẫn chạy tốt
2 - Khi sử dụng Onkey thì có thể bắt KeyCode của tất cả các phím mình gõ vào như keydown không nếu không cần khai báo
"{ENTER}"
Mục thứ nhất thì mình hiểu là cái dấu ~ là phím ENTER bình thường, {ENTER} là phím bên vùng NumLock, nếu bỏ dòng bạn đề cập mình nghĩ là chỉ có 1 phím ENTER ép phê thôi
Mục thứ 2 thì chịu thua rồi, nếu viết được chắc cũng phức tạp lắm
 
Lần chỉnh sửa cuối:
Upvote 0

2 - Khi sử dụng Onkey thì có thể bắt KeyCode của tất cả các phím mình gõ vào như keydown không nếu không cần khai báo
"{ENTER}"
Khi ấy người ta sẽ không dùng Onkey đâu mà dùng hàm API để làm điều này
Gửi bạn 1 code đơn giản để bắt sự kiện KeyPress nè
(còn phải hoàn thiện rất nhiều)
 

File đính kèm

Upvote 0
Các thầy, anh chị cho em hỏi thêm một số vấn đề:
1 - Em nhận thấy sub Auto_Open() là 1 sub mặc định của Excel, khi khởi động nó sẽ tự chạy Code nằm trong Sub, vậy có những Sub mặc định nào nữa ạ?
2 - Với OnKey, khi gán Key cho macro thì key đó dường như mất tác dụng. Ví dụ như khi Enter gắn macro thì nhấn Enter không xuống dòng được nữa. Vậy cách khắc phục như thế nào ạ?
 
Upvote 0
Các thầy, anh chị cho em hỏi thêm một số vấn đề:
1 - Em nhận thấy sub Auto_Open() là 1 sub mặc định của Excel, khi khởi động nó sẽ tự chạy Code nằm trong Sub, vậy có những Sub mặc định nào nữa ạ?
Còn có Auto_Close sẽ chạy code khi đóng file
Ngoài ra còn có hàng tá sự kiện khác thuộc dạng tự động (như Workbook_Open, ActiveWorkbook.RunAutoMacros.. vân vân..)
2 - Với OnKey, khi gán Key cho macro thì key đó dường như mất tác dụng. Ví dụ như khi Enter gắn macro thì nhấn Enter không xuống dòng được nữa. Vậy cách khắc phục như thế nào ạ?
Onkey có khả năng "gán" phím thì nó cũng có khả năng Reset
Ví dụ Application.OnKey "~" để reset phím Enter ----> Vậy thì bạn tự mình quyêt định: Lúc nào gán phím Enter để chạy code, lúc nào reset nó
 
Lần chỉnh sửa cuối:
Upvote 0
Post nhầm! Nhờ mod xóa giúp
 
Upvote 0
Onkey có khả năng "gán" phím thì nó cũng có khả năng Reset
Ví dụ Application.OnKey "~" để reset phím Enter ----> Vậy thì bạn tự mình quyêt định: Lúc nào gán phím Enter để chạy code, lúc nào reset nó

Em đã test với 2 Button nhưng việc xóa bỏ Onkey chưa được, các thầy anh chị xem em sai ở chỗ nào ạ:
PHP:
Sub test()
MsgBox "Ban vua go phim ENTER"
End Sub
Sub Enter()
Application.OnKey "{enter}", "test"
End Sub

Sub EExit()
Application.OnKey "~"
End Sub
 
Upvote 0
Em đã test với 2 Button nhưng việc xóa bỏ Onkey chưa được, các thầy anh chị xem em sai ở chỗ nào ạ:
PHP:
Sub test()
MsgBox "Ban vua go phim ENTER"
End Sub
Sub Enter()
Application.OnKey "{enter}", "test"
End Sub

Sub EExit()
Application.OnKey "~"
End Sub

Gì kỳ vậy?
Gán phím ENTER của bàn phím số mà sao lại Reset ENTER của bàn phím chữ
Vầy mới đúng chứ
Mã:
Sub EExit()
Application.OnKey "{ENTER}"
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom