dポイントプレゼントキャンペーン実施中!

VBA初心者の質問です。
EXCELのVBAでセルの文字数バイト数を取得したくてLenB関数を使用しました。
しかし半角で入力してある文字(数字)でも1文字2バイトになってしまいます。

具体的に言うと以下の通りです。

---コード--------------

 Dim test As Integer
 test = Len(Activecell.Value)

-----------------------
 Activecellのセル内容「東京1234」

 TEST→「8」と取得したいのに「12」になってしまう。

--------------------

EXCEL上ではキチンと「12」になるのですがVBAでは違うのでしょうか。
どなたかご存じでしたら、よろしくお願いいたします。

A 回答 (3件)

VBA は内部的に UNICODE という文字コードを使用していて、これは半角の英数字も 2 byte です。


文字のバイト数を取得したいのなら、UNICODE → Shift JIS に変換しなければなりません。

test = LenB(StrConv("東京1234", vbFromUnicode))

とすればOKです。
    • good
    • 3
この回答へのお礼

ありがとうございました。希望通りの値を取得することが出来ました。またよろしくお願いいたします。

お礼日時:2004/02/24 06:03

VisualBasicのヘルプでも


MyString = "ABc"の例で
MyLen = LenB(MyString)
「' Windows の場合は 6、」と隅の方に書いてあって、Unicodeとの関連が示唆されています。
    • good
    • 1
この回答へのお礼

ありがとうございます。参考になりました。

お礼日時:2004/02/24 05:58

#1氏の補足


WindowsNT/2000/XP、Office2000以降、VB6以降が内部的に使っているのはUNICODEのUCS-2エンコードです。

UNICODEでもエンコードがUTF-8だと半角英数字は1byteになります。(その代わり漢字が3byteになりますが)、UCS-2なので英数でも2byte固定になります。
    • good
    • 1
この回答へのお礼

ありがとうございます。なるほどです。

お礼日時:2004/02/24 06:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A