VBAで文字列のバイト数により処理を分岐させるプログラムを実装したとき、
半角英数と全角文字列を区別してくれない。。だと。。!?
て感じでハマったのでメモ。access2016を使用。
##VBAでの文字列はUnicodeになる
VBAでは文字列がUnicode形式になるので、すべての文字が2バイトになる。
例えば文字列のバイト数を返すLenB関数を使ったとき、
下記の例では両方とも結果が2になる。
lenB("a")'2が返る
lenB("あ")'2が返る
##半角英数は1バイトで処理したいとき
半角英数は1バイトで処理したいとき、StrConv 関数を使って、
下記みたいな感じでUnicode からANSI に変換させる必要がある。
lenB(strconv("a",vbFromUnicode))'1が返る
lenB(strconv("あ",vbFromUnicode))'2が返る
Dim str As String
str = StrConv(str,vbFromUnicode)'ANSI に変換
'処理を記述
str = StrConv(str,vbUnicode)'Unicode に戻す
以上、AccessVBAでバイト数に依存したコードを
書くときは、注意が必要ってはなしでした。