プロプログラマ

プログラマーを職業としてます。 Flex,Air,C#,Oracle,HTML+JSの言語ノウハウを中心に情報発信していきます

[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対応

新品価格
¥2,310から
(2012/2/7 16:35時点)

Excel VBAパーフェクトマスター―Excel 2010/2007/2003/2002完全対応) (Perfect Master SERIES)

新品価格
¥3,360から
(2012/2/7 16:36時点)

 

 

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

, , ,

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください