LoginSignup
3
2

More than 5 years have passed since last update.

AccessVBAの文字コードにハマった話

Last updated at Posted at 2017-08-08

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でバイト数に依存したコードを
書くときは、注意が必要ってはなしでした。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2