• 締切済み

VBScriptの変数宣言

ASPでvbscriptを使って処理をしているページの修正を行っていたのですが、その中で不思議な状態が発生しています。 <% Option Explicit On Error Resume Next %> ===== 省略 ===== <% filename = Trim(bobj.Form(bin,"filename")) Dim filename ===== 省略 ===== 普通、上記のような記述ではfilenameの代入のところでエラーが発生すると思うのですが、代入処理の直後にerr.numberを判定しても、エラーが発生していないんです。 includeしてあるファイルの内部も検索しましたが、filenameの変数宣言は見つかりませんでした。 VBScriptって、どこで変数宣言を行っても有効になるのでしょうか? 正常に動いているので、今のところ問題は無いのですが、何か気持ち悪くて。。。 似たような現象が起こった事のある方や、これが正しい動きだというご指摘をお願いいたします。

みんなの回答

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.4

BLUEPIXYさんの回答にもありますように質問の件はヘルプにちゃんと書いてあります。 【プロシージャの外部】で宣言した変数は、スクリプトレベルの変数になりスクリプト全体で使用可能。 ということは 【プロシージャの外部】であれば、どこで宣言しても(その変数を使う後で宣言しても)スクリプトレベルの変数を宣言したことになる。 よって、提示のコードでも上手く動作する。 質問する前に先ずヘルプを眺めてみませう。。 (^^;;  

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

VBScript のヘルプ(ドキュメント)からの引用 ---------------------------------------------------------------- Option Explicit ステートメントを記述した場合、変数は、Dim、Private、Public、ReDim などの各ステートメントで明示的に宣言する必要があります。宣言されていない変数名を使うと、エラーが発生します。 Dim ステートメントを使ってスクリプト レベルで宣言した変数は、宣言したスクリプト内のすべてのプロシージャから参照できます。 ---------------------------------------------------------------- つまり、Option Explicit を宣言した場合、変数宣言がされていない場合には<b>エラーになります</b> >どこで変数宣言を行っても有効になるのでしょうか? そういうことになります。

knkenkn
質問者

お礼

御礼遅くなりました。 ヘルプは読んでたんですけど、変数の使用後に宣言を行っても有効とは・・・ そういう意味とは、まいりました。 ご回答ありがとうございました。

  • PrintScree
  • ベストアンサー率25% (538/2091)
回答No.2

VBScriptはOption Explicitを宣言しても無視する仕様だったはずです。(今思い出しました^^;) たしか、JavaScriptも変数宣言無で変数を使えましたよね? ということで、HTMLに埋め込むスクリプトは変数宣言なしでも使用可能ということなのでしょう。

knkenkn
質問者

お礼

御礼遅くなりました。 いろいろ調べて実験した結果、スクリプトレベルで使用する変数は、プロシージャ外部のどこで宣言しても有効になってました。結構乱暴な仕様なんですね。VBScriptって・・・ ご回答ありがとうございました。

  • PrintScree
  • ベストアンサー率25% (538/2091)
回答No.1

VBScriptの元はBASICですから、C等のように変数宣言をしなくても変数が使用できます。 まぁ、この仕様のおかげで変数のスペルミスがあっても中々特定が難しい場合があります^^; この仕様はVisualBasicやExcel,AccessのVBAも一緒です。ただし、ある特定の宣言を行うと変数宣言していないとエラーとして扱う事が可能です。 (VBSはその宣言が使えなかったような気がする…)

knkenkn
質問者

お礼

ご回答ありがとうございます。 確かにそうですね。ただ Option Explicit は宣言してあるので、引っかかると思うんですけどね。。。 他人が作ったモノを修正しているので、混乱しているのかもしれません。 もう一度、落ち着いて解析し直してみます。

関連するQ&A