Anh cho em xin API đó được không ạ, em có tìm trên mạng mà không thấyCái bạn hỏi có thể đọc ra bằng hàm API GetUserDefaultLangID. Với thiết lập như trên hình thì nó sẽ trả về 1066 = &H42A. Nhưng còn một cái là GetSystemDefaultLangID.
Trong CP chỗ bạn chỉ bạn có thể thiết lập (chọn) khác đi. Lúc đó GetUserDefaultLangID sẽ trả về kết quả khác. Vd. bạn chọn Polish thì GetUserDefaultLangID bây giờ trả về 1045. Nhưng với hàm GetSystemDefaultLangID thì lại khác. Bạn có thể chọn chỗ như trên hình thế nào chăng nữa thì GetSystemDefaultLangID luôn trả về giá trị như nhau.
Tôi cho vd. Sau khi tôi cài Windows phiên bản Ba Lan thì ở chỗ hình mà bạn hỏi tôi có Polski (Polish) và cả GetSystemDefaultLangID lẫn GetUserDefaultLangID đều trả về 1045. Bây giờ tôi vào chỗ ở hình và chọn Wietnamski (Vietnamese) thì GetSystemDefaultLangID vẫn trả về 1045 còn GetUserDefaultLangID trả về 1066.
Về code ở bài trước của tôi thì thế nào? Nếu bạn nhìn thấy trong MsgBox y như trong A1 thì chụp cho tôi màn hình MsgBox. Bạn hỏi tôi nhưng tôi cũng tò mò. Sao bạn không cho biết kết quả? Còn nếu bây giờ nhìn thấy "đầu trâu mặt ngựa" thì cũng nên nói một lời cho mọi người biết.
Tôi cũng có ý nghĩ về Format nhưng rõ ràng chuỗi s ở trên của tôi là chuỗi unicode chứ không phải chuỗi ANSI trong Windows-1258.
À quên viết một chỗ. Nếu bạn chuyển sang thẻ Administrative -> mục Language for non-Unicode programsAnh cho em xin API đó được không ạ, em có tìm trên mạng mà không thấy
#If VBA7 Then
Private Declare PtrSafe Function GetUserDefaultLangID Lib "kernel32" () As Integer
Private Declare PtrSafe Function GetSystemDefaultLangID Lib "kernel32" () As Integer
#Else
Private Declare Function GetUserDefaultLangID Lib "kernel32.dll" () As Integer
Private Declare Function GetSystemDefaultLangID Lib "kernel32.dll" () As Integer
#End If
Sub test()
MsgBox "GetUserDefaultLangID = " & GetUserDefaultLangID
MsgBox "GetSystemDefaultLangID = " & GetSystemDefaultLangID
End Sub