[ExcelVBA] バイト単位の切り出し注意
VBAを使って、固定長の文字列から指定桁数毎に文字列を切り出していく場合、
MidB関数を使うことは簡単に想定できますが、実際にやってみると、うまく切り出せません。
ExcelVBAでは文字をUNICODE扱いしているためで、半角も全角も2バイトになります。
そのため、バイトを指定しているのに、切り出し位置がおかしくなります。
Shift-JISのように、半角1バイト、全角2バイトとして扱うためには、StrConv関数を間に通す必要があります。
result= StrConv(MidB$(StrConv("aaaabbbbbbcccccdddddeee", vbFromUnicode), 1, 4), vbUnicode)
かなり分かりにくいですね。
なお、Excel関数のMidBはこのような処理は不要です。
VBAなかなか奥が深い
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本―最初からそう教えてくれればいいのに!Excel2007/2003対応 新品価格 |
Excel VBAパーフェクトマスター―Excel 2010/2007/2003/2002完全対応) (Perfect Master SERIES) 新品価格 |
== ランキングに参加しています。ぜひクリックお願いします ==
Labelの3点リーダ(…)表示位置が気に入らないとき [Flex][as3] traceの意外に便利な使い方