プロが教える店舗&オフィスのセキュリティ対策術

VBA初心者の質問ですが、宜しくお願いします。

エクセル上にUnicodeしか存在しない文字が含まれた文字列を入力するとします。
VBAでその文字列に、Unicodeしか存在しない文字が入力されているかどうかの判定をするにはどのようにしたらいいでしょうか?

また、その文字列(Unicodeしか存在しない文字が含まれる)のバイト数を正しく取得するにはどうしたらいいでしょうか?

A 回答 (1件)

> VBAでその文字列に、Unicodeしか存在しない文字が入力されているかどうかの判定



「一旦Shif-JISに変換して、すぐにUnicodeに戻して、元の文字列と比較する」としてはどうでしょう?

Unicodeにしかない文字は文字化けしてしまいますから、
内容が変わってしまうので判断できるかも。

尤も、2種類のUncode文字が1つのShift-JISコードに対応しているケースもあります。
この場合も元の文字と変わってしまう場合がありますので、万全の方法ではありませんが・・・

> その文字列(Unicodeしか存在しない文字が含まれる)のバイト数を正しく取得
「正しいバイト数」って何のことでしょう???

VBAでの、Unicodeは1文字2バイト固定ですから、
普通「文字数*2」がバイト数ですが・・・

他に「Shift-JISに変換した場合のバイト数」と言う考え方もありますが・・・
「Unicodeにしか存在しない文字」=「Shift-JISに変換できない文字」ですから・・・「バイト数」は数え様が無いですよね?

#「正しい(と貴方が考える)バイト数」を決める必要があるのでは?
#例えば
#『「Unicodeにしか存在しない文字」は0バイトとして数えることにする』とか、
# 『「Unicodeにしか存在しない文字」は2バイトとして数えることにする』とか・・・
    • good
    • 0

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