Dùng fím ESCAPE để thoát form hiện hành!

Liên hệ QC

emgaingayngo

Thành viên hoạt động
Tham gia
9/2/07
Bài viết
141
Được thích
5
Các bạn giúp mình câu lệnh trong VBA để khi nhấn nút Escape thì làm thoát form hiện hành. Cảm ơn nhìu!
 
Bạn có thể dùng sự kiện Key Press
Mã:
Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = 27 Then Me.Hide
End Sub
 
Upvote 0
Không cần Code đâu. Bạn vào cửa sổ lập trình(Alt + F11). trên Form đó, bạn thêm một "Cmd Button".
trong phần thuộc tính - properties(cửa số bên trái phía dưới màn hình) của Button này bạn thiết lập thuộc tính "Cancel = true" là Ok. Nếu trường hợp không thích Button này tồn tại khi show "the form". thì chọn tiếp thuộc tính "Visible = False". Thế là ok
Quên là Code của Button này thì như sau:
Private Sub CMD_Click()
End
End Sub
P/s: Hì như vậy là vẫn phải có code rồi. Thật sorry--=0
 
Lần chỉnh sửa cuối:
Upvote 0
Em xin hỏi KeyAscii này lấy ở đâu và nếu có thể thì cho em xin luôn 1 bảng về tất cả chỉ số này được không? (Ví dụ như lệnh Enter, Tab, CapsLock,...) Thanks.
 
Lần chỉnh sửa cuối:
Upvote 0
Mình tạo form mới, không có nút Exit thì dùng cách của chibi thì OK, nhưng form của mình đã có nút Exit thì nó không chạy. Còn cách của NEO thì OK! Chưa biết tại sao? Để suy nghĩ tiếp. Cảm ơn các bạn!
 
Upvote 0
Bạn có thể dùng sự kiện Key Press
Mã:
Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = 27 Then Me.Hide
End Sub

Khi trên form có thêm các Obj khác như Textbox, combobox . . thì Event này lại không thực thi được.

Sao vậy nhỉ ???

Thân!
 
Upvote 0
Thêm 1 cách tham khảo cho vui :
Khi khởi động Form, dùng lệnh
Application.Onkey "{ESC}", "Thoat"
.............
Sub Thoat()
Unload Me
End Sub

TDN
 
Upvote 0
Bác có thể chỉ rõ hơn được không? Em tìm rồi nhưng sao không thấy!
Với F1 ta sẽ có
KeyAscii.jpg
 
Upvote 0
Thêm 1 cách tham khảo cho vui :
Khi khởi động Form, dùng lệnh
Application.Onkey "{ESC}", "Thoat"
.............
Sub Thoat()
Unload Me
End Sub

TDN

Khi có các Obj khác vẫn không được bác ạ, không hiểu sao lại thế ???

Vì vậy đành phải sử dung Event Presskey của các Obj thôi.

Thân !
 
Lần chỉnh sửa cuối:
Upvote 0
Vậy bác có cách nào làm cho form đó luôn ở trạng thái Active sau mỗi lần dùng Cmd, Obj không. Em nghĩ rằng do cái cmd, obj đó đã chiếm quyền sở hữu của form mất rồi nên những thao tác trực tiếp trên form điều không có tác dụng! À, còn phím Alt + F4 thì bác nghĩ sao nhỉ! Em thấy nó chạy tốt đó. Thân. Em có mẹo này! Áp dụng lệnh thoát cho commandbutton.
PHP:
Private Sub CommandButton1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If KeyAscii = 27 Then Me.Hide End Sub
Code này ứng với CommandButton1. Nếu tất cả các cmd, obj điều có thể đặt code này vào thì có thể tắt ở bất cứ nơi đâu trên Form rồi! Thân.
 
Lần chỉnh sửa cuối:
Upvote 0
Vậy bác có cách nào làm cho form đó luôn ở trạng thái Active sau mỗi lần dùng Cm

Em có mẹo này! Áp dụng lệnh thoát cho commandbutton.
PHP:
Private Sub CommandButton1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 27 Then Me.Hide
End Sub
Code này ứng với CommandButton1. Nếu tất cả các cmd, obj điều có thể đặt code này vào thì có thể tắt ở bất cứ nơi đâu trên Form rồi!
Thân.

Thì ở trên đã nói rồi :

Vì vậy đành phải sử dung Event Presskey của các Obj thôi.

Thân!
 
Upvote 0
Private Sub Cmb2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 13 Then Exit Sub ' Dùng phím Enter
End Sub

Cái đoạn code trên là dùng cho Combobox trên Sheet(control toolbox), em thử dùng Cho Enter key mà chẳng thấy nó có hơi hám gì cả, cứ trơ ra đó. Trong khi dùng cho Esc key thì lại Ok. Cho em hỏi là tại sao ạh?
 
Upvote 0
Tối nay tự nhiên khám phá ra chuyện này. Đơn giản lắm.
Vẽ lên cái Form một cái Command Button, đặt tên cho nó là CmbCLOSE chẳng hạn.
Dò bên bảng Property, có muc Cancel, gán cho nó = True.
000-1538.jpg

Rồi nhấn đúp vào cái nút này để vào trong Code, gõ dòng lệnh Unload Me vào cái Sub đang có sẵn:
PHP:
Private Sub CmbClose_Click()
    Unload Me
End Sub
Thế là xong. Mở Form lên, nhấn ESC, Form biến tiệt!
 
Upvote 0
Cách này NEO nói rồi mà.
Các Button ngoài thuộc tính Cancel để dùng cho phím ESC ra còn thuộc tính Defualt dùng cho phím Enter.
Ai đó hỏi về KeyAscii: Nó trả về mã ASCII của phím nhấn, nếu dùng Chr(KeyAscii) sẽ cho ra ký tự của phím nhấn.
Với đoạn code sau, ta sẽ biết được phím vừa nhấn có mã là bao nhiêu.
Private Sub Txt1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Me.Caption = KeyAscii & "-" & Chr(KeyAscii)
End Sub
 
Upvote 0
NEO đã viết:
Không cần Code đâu. Bạn vào cửa sổ lập trình(Alt + F11). trên Form đó, bạn thêm một "Cmd Button".
NEO đã viết:
trong phần thuộc tính - properties(cửa số bên trái phía dưới màn hình) của Button này bạn thiết lập thuộc tính "Cancel = true" là Ok. Nếu trường hợp không thích Button này tồn tại khi show "the form". thì chọn tiếp thuộc tính "Visible = False". Thế là ok
Quên là Code của Button này thì như sau:
Private Sub CMD_Click()
End
End Sub

Khi em cho thu
ộc tính "Visible = False" thì không được, chỉ khi "Visible = true" thì mới được.
Mong mọi người chỉ giáo.
 
Upvote 0
Tối nay tự nhiên khám phá ra chuyện này. Đơn giản lắm.
Vẽ lên cái Form một cái Command Button, đặt tên cho nó là CmbCLOSE chẳng hạn.
Dò bên bảng Property, có muc Cancel, gán cho nó = True.
000-1538.jpg

Rồi nhấn đúp vào cái nút này để vào trong Code, gõ dòng lệnh Unload Me vào cái Sub đang có sẵn:
PHP:
Private Sub CmbClose_Click()
    Unload Me
End Sub
Thế là xong. Mở Form lên, nhấn ESC, Form biến tiệt!
Tuyệt vời cảm ơn pro nhé!
 
Upvote 0
Web KT

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

Back
Top Bottom