Giúp tạo phím tắt Trong form (1 người xem)

Liên hệ QC

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

minhtuan55

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
23/3/16
Bài viết
705
Được thích
52
Chào cả nhà GPE !
Em cần tạo 1 vài phím tắt trong Form . em đang dùng sự kiện Keydown nhưng do From quá nhiều Textbox và Combox thì bây giờ chẳng lẽ làm từng cái từng cài thì lâu quá. Có cách nào để Form hiểu khi chúng ta nhấn F1 hay nút gì đó thì Form sẽ hiếu đó là Keydow rồi từ đó ta gán lệnh vào phím đó không. Em xin chân thành cảm ơn
 

File đính kèm

Tôi chỉ nhìn 1 cái coi chơi thôi.
 
Upvote 0
Nhìn thì cũng là lạ nhưng mà sợ mang ơn người hỏi quá, hổng dám rớ vào
 
Upvote 0
Chào cả nhà GPE !
Em cần tạo 1 vài phím tắt trong Form . em đang dùng sự kiện Keydown nhưng do From quá nhiều Textbox và Combox thì bây giờ chẳng lẽ làm từng cái từng cài thì lâu quá. Có cách nào để Form hiểu khi chúng ta nhấn F1 hay nút gì đó thì Form sẽ hiếu đó là Keydow rồi từ đó ta gán lệnh vào phím đó không. Em xin chân thành cảm ơn
Cái này phải dùng Class Module thì code mới gọn được bạn à! Quy trình như sau:
1> Chèn 1 Class Module, đặt tên cho nó là clsEvents
Code trong class như sau:
Mã:
Public WithEvents tbox As MSForms.TextBox
Public WithEvents cbox As MSForms.ComboBox
Private Sub tbox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  Select Case KeyCode
    Case Is = 112: MsgBox (" nhan F1 de lam 1 cai gi do"), , tbox.Name
    Case Is = 113: MsgBox (" nhan F2 de lam 1 cai gi do"), , tbox.Name
    Case Is = 114: MsgBox (" nhan F3 de lam 1 cai gi do"), , tbox.Name
  End Select
End Sub
Private Sub cbox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  Select Case KeyCode
    Case Is = 112: MsgBox (" nhan F1 de lam 1 cai gi do"), , cbox.Name
    Case Is = 113: MsgBox (" nhan F2 de lam 1 cai gi do"), , cbox.Name
    Case Is = 114: MsgBox (" nhan F3 de lam 1 cai gi do"), , cbox.Name
  End Select
End Sub
2> Xóa hết code trong UserForm, chèn code mới dưới đây vào:
Mã:
Dim objTbx() As New clsEvents, objCbo() As New clsEvents
Private Sub UserForm_Initialize()
  Dim ctr As Control, n1 As Long, n2 As Long
  For Each ctr In Me.Controls
    If (TypeOf ctr Is MSForms.TextBox) Then
      n1 = n1 + 1
      ReDim Preserve objTbx(1 To n1)
      Set objTbx(n1).tbox = ctr
    End If
    If (TypeOf ctr Is MSForms.ComboBox) Then
      n2 = n2 + 1
      ReDim Preserve objCbo(1 To n2)
      Set objCbo(n2).cbox = ctr
    End If
  Next
End Sub
Xong!
UserForm có bao nhiêu TextBox hay ComboBox cũng nhiêu đó code mà thôi
 
Upvote 0
Cái này phải dùng Class Module thì code mới gọn được bạn à! Quy trình như sau:
1> Chèn 1 Class Module, đặt tên cho nó là clsEvents
Code trong class như sau:
Mã:
Public WithEvents tbox As MSForms.TextBox
Public WithEvents cbox As MSForms.ComboBox
Private Sub tbox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  Select Case KeyCode
    Case Is = 112: MsgBox (" nhan F1 de lam 1 cai gi do"), , tbox.Name
    Case Is = 113: MsgBox (" nhan F2 de lam 1 cai gi do"), , tbox.Name
    Case Is = 114: MsgBox (" nhan F3 de lam 1 cai gi do"), , tbox.Name
  End Select
End Sub
Private Sub cbox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  Select Case KeyCode
    Case Is = 112: MsgBox (" nhan F1 de lam 1 cai gi do"), , cbox.Name
    Case Is = 113: MsgBox (" nhan F2 de lam 1 cai gi do"), , cbox.Name
    Case Is = 114: MsgBox (" nhan F3 de lam 1 cai gi do"), , cbox.Name
  End Select
End Sub
2> Xóa hết code trong UserForm, chèn code mới dưới đây vào:
Mã:
Dim objTbx() As New clsEvents, objCbo() As New clsEvents
Private Sub UserForm_Initialize()
  Dim ctr As Control, n1 As Long, n2 As Long
  For Each ctr In Me.Controls
    If (TypeOf ctr Is MSForms.TextBox) Then
      n1 = n1 + 1
      ReDim Preserve objTbx(1 To n1)
      Set objTbx(n1).tbox = ctr
    End If
    If (TypeOf ctr Is MSForms.ComboBox) Then
      n2 = n2 + 1
      ReDim Preserve objCbo(1 To n2)
      Set objCbo(n2).cbox = ctr
    End If
  Next
End Sub
Xong!
UserForm có bao nhiêu TextBox hay ComboBox cũng nhiêu đó code mà thôi

Quá tuyệt vời cảm ơn anh nhiều lắm. nếu em thêm cho CommandButton thì copy như thế này đúng không anh ?
Mã:
Public WithEvents tbox As MSForms.TextBox
Public WithEvents cbox As MSForms.ComboBox
Public WithEvents cmbox As MSForms.CommandButton
Private Sub tbox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  Select Case KeyCode
    Case Is = 112: MsgBox (" nhan F1 de lam 1 cai gi do"), , tbox.Name
    Case Is = 113: MsgBox (" nhan F2 de lam 1 cai gi do"), , tbox.Name
    Case Is = 114: MsgBox (" nhan F3 de lam 1 cai gi do"), , tbox.Name
  End Select
End Sub
Private Sub cbox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  Select Case KeyCode
    Case Is = 112: MsgBox (" nhan F1 de lam 1 cai gi do"), , cbox.Name
    Case Is = 113: MsgBox (" nhan F2 de lam 1 cai gi do"), , cbox.Name
    Case Is = 114: MsgBox (" nhan F3 de lam 1 cai gi do"), , cbox.Name
  End Select
End Sub
Private Sub cmbox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  Select Case KeyCode
    Case Is = 112: MsgBox (" nhan F1 de lam 1 cai gi do"), , cmbox.Name
    Case Is = 113: MsgBox (" nhan F2 de lam 1 cai gi do"), , cmbox.Name
    Case Is = 114: MsgBox (" nhan F3 de lam 1 cai gi do"), , cmbox.Name
  End Select
End Sub

-------------------------------------
Dim objTbx() As New clsEvents, objCbo() As New clsEvents, objCmbo() As New clsEvents




Private Sub UserForm_Initialize()
  Dim ctr As Control, n1 As Long, n2 As Long
  For Each ctr In Me.Controls
 
    If (TypeOf ctr Is MSForms.TextBox) Then
      n1 = n1 + 1
      ReDim Preserve objTbx(1 To n1)
      Set objTbx(n1).tbox = ctr
    End If
    
    If (TypeOf ctr Is MSForms.ComboBox) Then
      n2 = n2 + 1
      ReDim Preserve objCbo(1 To n2)
      Set objCbo(n2).cbox = ctr
    End If
    
    If (TypeOf ctr Is MSForms.CommandButton) Then
      n2 = n2 + 1
      ReDim Preserve objCmbo(1 To n2)
      Set objCmbo(n2).cmbox = ctr
    End If
    
  Next
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom