Cho hỏi về sự kiện Onkey

Liên hệ QC

chipvang

Thành viên mới
Tham gia
29/11/08
Bài viết
37
Được thích
11
Tôi dùng sự kiện Onkey để đặt phím tắt cho các hàm, ví dụ có n hàm
như sau

Mã:
ExcelApp.OnKey "^T", "Macro1"
ExcelApp.OnKey "^B", "Macro"
...
ExcelApp.OnKey "^B", "Macro"
Giả sử có n hàm thì phải tạo sẵn n hàm này hay sao? có cách nào chỉ gắn 1 hàm rồi trong hàm đó xác dịnh được phím hay tổi hợp phí gì vừa bấm, từ đó chủ động gọi các hàm con tương ứng

Vd:

Mã:
ExcelApp.OnKey "^T", "Macro"
ExcelApp.OnKey "^B", "Macro"
...
ExcelApp.OnKey "^C", "Macro" ' -> hàm thứ n

'rồi dùng hàm

sub Macro

select case 'Tổ hợp phí người dùng bấm[INDENT]case "^T"[INDENT]'Do ham A
[/INDENT]case "^B"[INDENT]'Do ham B
[/INDENT]..

end select
[/INDENT]end sub
ai biết xin chỉ giúp

Thanks,
 
Đơn giản nhất là viết 1 Sub điều khiển cho người sử dụng lựa chọn
 
Upvote 0
Ví dụ bạn tạo 1 sub mơ có inputbox nhập tên Macro để mở.
Dễ sử dụng hơn nên tạo 1 form như ví dụ kèm
 

File đính kèm

Upvote 0
Không thể được Chipvang à. OnKey là nó đã gán phím tắt để khởi động Macro rồi nên cho dùng mình có bẫy được phím tắt trong Macro thì nó vẫn ra cái phím được gán trong OnKey thôi. Có lẽ vẫn phải viết nhiều OnKey thôi.
 
Upvote 0
Cách của TuanVNUNI là cách của các nhà chuyên môn, nhưng mình thấy quá nhiều onkey phải dè chừng hy sinh các lệnh tắt của Excel ảnh hưởng đến hoạt động chung của chương trình.
Mình thì bắt chước thằng con mình, nó không biết làm Anten chữ C hay Xương cá. Vậy là hắn lấy ngay cái vỉ kẹp nướng cá nối dây Anten vào tivi. Bật lên xem thấy hình ảnh không thua kém mấy nhưng hơn hẳn là không phải xoay anten theo hướng.

Nay tuỳ theo điều kiện cụ thể mình set lại lệnh onkey thì với 1 lệnh tắt Ctrl+m mình cũng có cái mình cần. Hôm nay thì thực sự "củ chuối" nhưng cũng ấm bụng đấy chứ.
 

File đính kèm

Upvote 0
Đúng là dùng Onkey phải cẩn thận vì dễ bị trùng với phím tắt trong Excel, chipvang thật cẩn thận nhé. Tôi đã bị trường hợp phím Del bị vô hiệu hoá trong control do dùng Del trong menu, mãi mới phát hiện được.
 
Upvote 0
Cách của TuanVNUNI là cách của các nhà chuyên môn, nhưng mình thấy quá nhiều onkey phải dè chừng hy sinh các lệnh tắt của Excel ảnh hưởng đến hoạt động chung của chương trình.
Mình thì bắt chước thằng con mình, nó không biết làm Anten chữ C hay Xương cá. Vậy là hắn lấy ngay cái vỉ kẹp nướng cá nối dây Anten vào tivi. Bật lên xem thấy hình ảnh không thua kém mấy nhưng hơn hẳn là không phải xoay anten theo hướng.

Nay tuỳ theo điều kiện cụ thể mình set lại lệnh onkey thì với 1 lệnh tắt Ctrl+m mình cũng có cái mình cần. Hôm nay thì thực sự "củ chuối" nhưng cũng ấm bụng đấy chứ.

Cách của anh không củ chuối đâu. Cách này em cũng vấn áp dụng khi nó ở các sheet khác nhau, địa chỉ ô khác nhau. Không biết có đúng ý tưởng của Chipvang không?
 
Upvote 0
cám ơn vì ý tưởng gán Macro động nhưng đây chưa phải là điều mình mong muốn. các phím mình gán cho Onkey không liên quan đến sự kiện, nên không làm theo cách trên được. Chẳng qua mình không muốn hiển thị các Hàm của mình trong VBA nên muốn chỉ qua 1 hàm, biết tổ hợp phím nào bấm rồi gọi các hàm con trong VB6.

Xem ra đúng như Mr Tuân nói. Cái này không làm được nó là phím gắn gọi macro nên khi bấm nó gọi macro ra là xong, hết nhiệm vụ không cần trả về phím làm gì,

Thôi mình tìm cách khác vậy.
 
Upvote 0
Web KT

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

Back
Top Bottom