• ベストアンサー

VBSのIF文について

VBSのIF文の質問です。 OS:XP(SP3) たまたま間違った変数名を使った事ではまってしまった事なのですが 下記がTrueで評価されてしまいました。これは正しい評価なのでしょうか? サンプルコード rcode = 0 a = 0 If rcode = e Then msgbox "「" & rcode & "」 = 「" & e & "」は間違った評価だと思います" else msgbox "「" & rcode & "」 <> 「" & e & "」です" end if

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

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.1

MsgBox TypeName(e) を実行すると、「Empty」と表示されます。  ここで、 rcode = 0 である場合に、 rcode = e という式の意味は、 0 = empty となりますが、 ●VBScript ランゲージ リファレンス - VBScript の演算子 - 比較演算子 http://msdn.microsoft.com/ja-jp/library/cc392349.aspx に ------------- 引用 → 条件:行われる演算 一方の式が Empty、他方が数値:数値モードで比較を行います。Empty には 0 を使用します。 ← 引用 ------------- とありますので、 0 = 0 と評価され、従って「True」と評価されます。  ご参考までに。。。 ●VBScript の変数 http://msdn.microsoft.com/ja-jp/library/cc392253.aspx ------------- 引用 → Microsoft® Visual Basic® Scripting Edition (以下 VBScript) では、変数のデータ型は常にバリアント型 (Variant) です。 ← 引用 ------------- ●VBScript のデータ型 http://msdn.microsoft.com/ja-jp/library/cc392195.aspx ------------- 引用 → Empty 値は、初期化されていない (初期値が代入されていない) バリアント型 (Variant) の変数を示します。その値は、数値変数として使用されるときは 0、文字列変数として使用されるときは長さ 0 の文字列 ("") として扱われます。 ← 引用 -------------

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

別件ですが Option Explicit を付けて、宣言無しに変数を使えないようにすると、変数名を間違えたときにはエラーになるので、少しは間違いを減らせます。 間違えた変数名が、定義済みの別の変数名になってしまっているとダメですが

関連するQ&A