:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

สอบถาม Code VB เช็คค่า System Locale

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
User avatar
tigerwit
Silver
Silver
Posts: 546
Joined: Wed Mar 31, 2010 10:51 pm
Location: สกลนคร
Excel Ver: 2019
Contact:

สอบถาม Code VB เช็คค่า System Locale

#1

Post by tigerwit »

จากไฟล์ที่แนบมา

Code: Select all

Sub CheckSystemLocale()
    Dim lang_code As Long
    ' Get the LCID of the user interface language
    lang_code = Application.LanguageSettings.LanguageID(msoLanguageIDUI)
    
    ' Display the LCID
    MsgBox "The system UI locale LCID is: " & lang_code
    
    ' You can then use this LCID in conditional statements
    If lang_code = 1033 Then ' 1033 is English (US)
        MsgBox "The system locale is English (US)."
    ElseIf lang_code = 1054 Then ' 1054 is Thai (Thailand)
        MsgBox "The system locale is Thai (Thailand)."
    Else
        MsgBox "The system locale is not English (US) or Thai (Thailand)."
    End If
End Sub
ผมต้องเช็คค่า System Locale ของเครื่องคอมพิวเตอร์ที่ใช้งานอยู่ตอนนี้ว่าตั้งค่าเป็นประเทศอะไร โดยได้ทดลองตั้งเป็น English (USA) แต่พอรัน Code กลับบอกว่าเป็น Thai (Thailand)
จะต้องปรับแก้อย่างไรครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31153
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถาม Code VB เช็คค่า System Locale

#2

Post by snasui »

:D ปัญหานั้นเนื่องจาก Application.LanguageSettings.LanguageID(msoLanguageIDUI) จะคืนค่า LCID ของ User Interface (UI) ของ Excel ไม่ใช่ System Locale ของ Windows โดยตรง ดังนั้นแม้จะตั้งค่า Windows เป็น English (USA) แต่ถ้า Excel ยังใช้ UI ภาษาไทย ก็จะได้ค่า LCID = 1054 (Thai)

ถ้าต้องการตรวจสอบ System Locale ของ Windows จริง ๆ (ไม่ใช่แค่ UI ของ Excel) ต้องใช้ Windows API ผ่าน VBA ดังนี้ครับ

Code: Select all

#If VBA7 Then
    Private Declare PtrSafe Function GetSystemDefaultLCID Lib "kernel32" () As Long
#Else
    Private Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long
#End If

Sub CheckSystemLocale()
    Dim sysLCID As Long
    sysLCID = GetSystemDefaultLCID()
    
    MsgBox "System Locale LCID is: " & sysLCID
    
    Select Case sysLCID
        Case 1033
            MsgBox "System Locale is English (US)"
        Case 1054
            MsgBox "System Locale is Thai (Thailand)"
        Case Else
            MsgBox "System Locale is not English (US) or Thai (Thailand)"
    End Select
End Sub
Post Reply