snasui.com ยินดีต้อนรับ ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
#If VBA7 Then
Private Declare Function ActivateKeyboardLayout Lib _
"user32.dll" (ByVal myLanguage As Long, Flag As Boolean) As Long
#Else
Private Declare PtrSafe Function ActivateKeyboardLayout Lib _
"user32.dll" (ByVal myLanguage As Long, Flag As Boolean) As Long
#End If
'define your desired keyboardlanguage
'find your desired language at https://technet.microsoft.com/en-us/library/dd744319(v=ws.10).aspx
Private Const THA = 1054 'thai keyboard language layout
Private Const ENG = 1033 'english(united states)keyboard language layout
Sub Set_Keyb_Thai()
Call ActivateKeyboardLayout(THA, 0)
End Sub
Sub Set_Keyb_Eng()
Call ActivateKeyboardLayout(ENG, 0)
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(TextBox2.text, Target) Is Nothing Then Set_Keyb_Thai
If Not Application.Intersect(TextBox3.text, Target) Is Nothing Then Set_Keyb_Eng
End Sub
Private Sub TextBox2_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Call Set_Keyb_Thai
End Sub
Private Sub TextBox3_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Call Set_Keyb_Eng
End Sub
Private Sub UserForm_Initialize()
TextBox2.SetFocus
Call Set_Keyb_Thai
End Sub
Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Call Set_Keyb_Thai
End Sub
Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Call Set_Keyb_Eng
End Sub
Private Sub TextBox2_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Call Set_Keyb_Thai
End Sub
Private Sub TextBox3_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Call Set_Keyb_Eng
End Sub