Page 1 of 1
เราสามารถกำหนด Textbox1 ให้เปลี่ยนภาษาเองได้หรือไม่ครับ
Posted: Fri Nov 04, 2016 3:09 pm
by akranan
สวัสดีครับ
เราสามารถกำหนดภาษาให้ช่อง Textbox ที่อยู่ใน Form ได้หรือไม่ครับ
เช่น Textbox1 ให้เป็นภาษาไทย พอกด Enter มาที่ Textbox2 ให้เปลี่ยนเป็นภาษาอังกฤษโดยอัตโนมัติครับ
ขอบคุณมากครับ
Re: เราสามารถกำหนด Textbox1 ให้เปลี่ยนภาษาเองได้หรือไม่ครับ
Posted: Fri Nov 04, 2016 7:41 pm
by kio2002
คุณ akranan อ่านกฏข้อ5ด้วยนะครับ
5. สำหรับคำถามเกี่ยวกับ VBA ให้ลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน ควรโพสต์ Code ให้แสดงเป็น Code เพื่อสะดวกในการอ่านและทดสอบ
Re: เราสามารถกำหนด Textbox1 ให้เปลี่ยนภาษาเองได้หรือไม่ครับ
Posted: Mon Nov 07, 2016 5:11 pm
by akranan
ตัวอย่างตามไฟล์แนบครับ
ใน Textbox2 เลือกไปที่ ช่อง A1 เพื่อให้เปลี่ยนเป็นภาษาไทยแล้วแต่ใน Form กรอกข้อมูลไม่ยอมเปลี่ยนภาษา Thai ให้
ใน Textbox3 เลือกไปที่ ช่อง ฺB1 เพื่อให้เปลี่ยนเป็นภาษา Eng แล้วแต่ใน Form กรอกข้อมูลไม่ยอมเปลี่ยนภาษา Eng ให้
ไม่ทราบว่าใส่ตรงไหนผิดครับ
Re: เราสามารถกำหนด Textbox1 ให้เปลี่ยนภาษาเองได้หรือไม่ครับ
Posted: Mon Nov 07, 2016 7:12 pm
by snasui

ตัวอย่าง Code ตามด้านล่างครับ
Code: Select all
#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
Re: เราสามารถกำหนด Textbox1 ให้เปลี่ยนภาษาเองได้หรือไม่ครับ
Posted: Mon Nov 07, 2016 8:47 pm
by akranan
code ด้านล่าง ตรง TextBox2.text << ใส่แบบนี้หรือไม่ครับ
ต้องการให้ TextBox2 กำหนดเป็นภาษาไทย
Code: Select all
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
Re: เราสามารถกำหนด Textbox1 ให้เปลี่ยนภาษาเองได้หรือไม่ครับ
Posted: Mon Nov 07, 2016 8:53 pm
by snasui

สำหรับที่เขียนมานั้นเป็นการกำหนดเมื่อเปลี่ยนการเลือกเซลล์ตามค่าใน TextBox หากเป็นเช่นนั้นแสดงว่าค่าใน TextBox ต้องเปลี่ยนก่อนจึงจะเปลี่ยนภาษา ไม่ทราบว่าตรงกับความต้องการหรือไม่ อย่างไร และที่เขียนไว้เช่นนั้นเกิดปัญหาใดครับ
หากไม่ตรงกับความต้องการ ให้แจ้งมาด้วยว่าตั้งใจจะกำหนดให้เปลี่ยนภาษาเมื่อเกิดเหตุการณ์ใดครับ
Re: เราสามารถกำหนด Textbox1 ให้เปลี่ยนภาษาเองได้หรือไม่ครับ
Posted: Mon Nov 07, 2016 9:31 pm
by akranan
ที่เขียนไว้นั้น ครั้งแรกขึ้น error หลังจากนั้นก็ไม่เกิดอะไรขึ้นครับและไม่สามารถเปลี่ยนภาษาได้ตามต้องการ
อยากจะกำหนดเหตุการณ์ดังนี้ครับ
1. เปลี่ยนภาษาไทยเมื่อคอเซอร์กระพริบ ที่ TextBox2 (ชื่อผู้รับสินค้า)
2. เปลี่ยนภาษาอังกฤษเมื่อคอเซอร์กระพริบ ที่ TextBox3 (ชื่อพนักงานจัดสินค้า) เนื่องจากต้องการยิง Barcode ลงในช่องนี้ครับ ถ้าเป็นภาษาไทย Code จะไม่เข้าครับ
ขอบคุณมากครับ
Re: เราสามารถกำหนด Textbox1 ให้เปลี่ยนภาษาเองได้หรือไม่ครับ
Posted: Mon Nov 07, 2016 9:45 pm
by snasui

ตัวอย่างตามด้านล่างจะเปลียนภาษาเมื่อคลิกลงในช่อง TextBox ครับ
Code: Select all
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
Re: เราสามารถกำหนด Textbox1 ให้เปลี่ยนภาษาเองได้หรือไม่ครับ
Posted: Tue Nov 08, 2016 1:46 pm
by akranan
ขอบคุณมากครับ ตอนแรกติดปัญหาไม่ได้ใช้ mouse คลิกใช้ปุ่ม Enter แทนเลยเปลี่ยนมาใช้ Keydown ครับ
แต่ติดปัญหาตรงที่เมื่อเปิด Form ขึ้นมาจะต้องกดลูกษรลงและขึ้นไปช่องเดิมเพื่อให้ code นี้ทำงาน ถ้าจะตั้งให้ code นี้ทำงานเลยเมื่อคลิกมาที่ form นี้ ต้องเพิ่มคำสั่งอย่างไรครับ
ตอนนี้ได้ครบทุกความต้องการแล้วครับโดยใช้ code ด้านล่างนี้ครับ
Code: Select all
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
ขอบคุณมากครับๆ