• ベストアンサー

1文字のStrConv fromUnicode

MS Access VBAでプログラムを組んでいるのですが、 大文字・小文字、全角・半角の区別をしたくて、 if StrConv(a,vbFromUnicode) = StrConv(b,vbFromUnicode) then exit sub といったif文を書いています(a, bは変数名)。 だいたいうまく行くのですが、a, bの中身が1文字の場合、どんな組み合わせでも条件がTrueになり、処理を抜けてしまいます。 原因、対処方法をご存知の方、ご教授いただけますでしょうか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

先ず、モジュールの最初に Option Compare Binary を宣言します。 この宣言文は比較をBinary、つまりコードで比較するという意味です。 これでもダメならStrComp(a, b, vbBinaryCompare)を使います。 StrCompはOption宣言に関わらず指定条件で比較を行います。 私の場合、Option Explicit と、Option Compare Binary は必ず 宣言します。 それと、UniCodeでない文字に対してStrConv(b,vbFromUnicode)を 使うとおかしな結果になります。ついでに言うと、1文字だけなら AscWという関数で文字のUniCodeを得ることができます。

shoji99
質問者

お礼

とりあえず、StrCompで試したところうまく行きました。 そういえばこんな関数ありましたよね。 すっかり忘れていました。 助かりました。 本当にありがとうございました。

その他の回答 (1)

  • NOBNNN
  • ベストアンサー率50% (93/186)
回答No.2

以下の参考Hpが有効では 参考: ■[VB] 半角文字か全角文字が判定する 【vbFromUnicode】 http://blog.livedoor.jp/keisuke0425/archives/51028500.html ■ 半角チェック http://www.accessclub.jp/bbs/0018/beginers8299.html

shoji99
質問者

お礼

なるほど、皆さんいろいろと技をお持ちですね。 ありがとうございました。

関連するQ&A