グローバル化が進んでますねぇ。
ところで、システムロケールをうっかり日本語以外にすると、VBAが全部文字化けするって知ってました?
まぁ、そりゃそうなんだけどって感じ。
Excelブック上から見える景色は文字化けしてないんだけど、VBAは化け化け。
セルにつけた名前も化けているので、名前を使ってセル参照するコードは動かない。
日本語を使わないという選択肢もあるけど、こちとら純度100%日本企業なんですー!がまだ大多数だと思う。
なら、起動したらまずロケールチェックかなぁ。
#If Win64 Then
Private Declare PtrSafe Function GetLocaleInfo Lib "kernel32" Alias _
"GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
#Else
Private Declare Function GetLocaleInfo Lib "kernel32" Alias _
"GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
#End If
' システムロケールが"Japan"か判別
Function IsJapanSystemLocale() As Boolean
Const LOCALE_SYSTEM_DEFAULT As Long = 2048
Const LOCALE_SENGCOUNTRY As Long = &H1002
Const KLNG_BUFFER_SIZE As Long = 256
Const KSTR_JAPAN_LOCALE As String = "Japan"
Dim buf As String * KLNG_BUFFER_SIZE
Call GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SENGCOUNTRY, buf, KLNG_BUFFER_SIZE)
IsJapanSystemLocale = (0 < Strings.InStr(1, buf, KSTR_JAPAN_LOCALE, vbTextCompare))
End Function
ただ、もう1個まずいことがあって。
このベータ機能が有効になっていると、日本語にしていても文字化けするんですよねー
公式資料がなさすぎて、今のところ放置。
誰かどうにかしてほしい。
他にもニッチなIT関連要素をまとめていますので、よければ一覧記事もご覧ください。