Sự kiện nhấn tổ hợp phím trong Userform

Liên hệ QC

lehoctk

Thành viên chính thức
Tham gia
20/2/21
Bài viết
60
Được thích
1
Chào cả nhà ạ, em có mong muốn viết code để bắt sự kiện nhấn tổ hợp phím Alt + 1, hoặc Alt + 2, ... để thực thi OptionButton1_Click (là tùy chọn tích vào "Theo nhóm 1") hoặc OptionButton2_Click (là tùy chọn tích vào "Theo nhóm 2") ạ
Userform của em như trong hình ạ. Em cảm ơn mọi người đã quan tâm.
1646719226770.png
 
Sự kiện thì là KeyDown thôi. Cái khó là lấy của "anh" nào. Không thể lấy của UserForm được vì trên Form có các controls nên đứa nào có focus thì nó thâu tóm mọi input từ bàn phím. Tương tự đó không thể là Frame. Đó chỉ có thể là controls như TextBox, CommandButton, ...

Giả sử lấy của CommnandButton1

Mã:
Private Sub CommandButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If Shift = 4 Then  ' Alt = 4
        If KeyCode = 49 Then  ' phím 1
            OptionButton1.Value = 1
        ElseIf KeyCode = 50 Then  ' phím 2
            OptionButton2.Value = 1
        End If
    End If
End Sub

Như vậy muốn thực hiện code ở trên thì phải dùng TAB để "đi tới" CommandButton1. Lúc này CommandButton1 có focus nên nhấn Alt + 1 hay Alt + 2 sẽ chọn OptionButton1 hoặc OptionButton2.
 
Upvote 0
Sự kiện thì là KeyDown thôi. Cái khó là lấy của "anh" nào. Không thể lấy của UserForm được vì trên Form có các controls nên đứa nào có focus thì nó thâu tóm mọi input từ bàn phím. Tương tự đó không thể là Frame. Đó chỉ có thể là controls như TextBox, CommandButton, ...

Giả sử lấy của CommnandButton1

Mã:
Private Sub CommandButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If Shift = 4 Then  ' Alt = 4
        If KeyCode = 49 Then  ' phím 1
            OptionButton1.Value = 1
        ElseIf KeyCode = 50 Then  ' phím 2
            OptionButton2.Value = 1
        End If
    End If
End Sub

Như vậy muốn thực hiện code ở trên thì phải dùng TAB để "đi tới" CommandButton1. Lúc này CommandButton1 có focus nên nhấn Alt + 1 hay Alt + 2 sẽ chọn OptionButton1 hoặc OptionButton2.
Em cảm ơn bác rất nhiều ạ.
Bài đã được tự động gộp:

Có khi người ta muốn cùng lúc chọn cả 2. Mùa này 2 vạch nhiều quá mà
Cảm ơn bác đã quan tâm, nhưng vấn đề của em là 1 "vạch" ạ.
Bài đã được tự động gộp:

Cảm ơn bác rất nhiều, em xin thông tin tới bác 1 câu hỏi của bác dành cho em trên form trong file bác gửi như sau:
Em chưa có nhiều kiến thức nên không biết là các OptionButton theo nhóm trong trường hợp này cần phải để 1 frame. Từ giờ em đã có được kiến thức này và chắc chắn tương lai sẽ sử dụng ạ.
Cảm ơn bác rất nhiều ạ
Bài đã được tự động gộp:

Bác cho em hỏi chút với: bác có nói là không cần code, vậy cho em hỏi có phải Form đã tự hỗ trợ khi mình Gom các OptionButton vào cùng 1 frame phải không hay cần phải thiết lập thuộc tính nào để sử dụng ạ. Giả sử có nhiều hơn 2 OptionButton thì cứ nhấn Alt + số thứ tự của OptionButton phải không ạ.
Em cảm ơn
 
Lần chỉnh sửa cuối:
Upvote 0
Giả sử có nhiều hơn 2 OptionButton thì cứ nhấn Alt + số thứ tự của OptionButton phải không ạ.
Bạn xem property của label option button hoặc bất kỳ label nào, sẽ thấy Accelerator. Chọn 1 trong các ký tự của caption, ký tự đó sẽ được gạch dưới. Thế là phím tắt là Alt + ký tự đó.

1647052293189.png

có phải Form đã tự hỗ trợ khi mình Gom các OptionButton vào cùng 1 frame phải không hay cần phải thiết lập thuộc tính nào để sử dụng ạ.
Nếu không cần phân nhóm thì không cần frame. Lúc này tất cả option button chỉ được chọn 1
Nếu có frame phân nhóm thì mỗi frame có quyền chọn 1 option
 
Upvote 0
Web KT

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

Back
Top Bottom