Execute ステートメント

指定された 1 つ以上のステートメントを実行します。

Execute statement

引数 statement は、必ず指定します。statement には、実行するためのステートメントが 1 つ以上含まれた文字列式を指定します。statement に複数のステートメントを指定する場合は、コロンまたは埋め込み改行で区切ります。

解説

VBScript では、x = y の解釈が 2 とおりあります。1 つ目は代入ステートメントとして解釈され、y の値が x に代入されます。2 つ目は xy の値が等しいかどうかをテストする式として解釈されます。等しい場合、result は True です。それ以外の場合、result は False です。Execute ステートメントは常に 1 つ目の解釈を適用し、Eval メソッドは常に 2 つ目の解釈を適用します。

**メモ   **Microsoft® JScript™ では、代入と比較を混同することはありません。代入演算子 (=) は比較演算子 (==)と異なるからです。

Execute ステートメントが呼び出されるときのコンテキストによって、実行中のコードで使用できるオブジェクトと変数が決まります。Execute ステートメントで実行されるコードの中では、スコープ内のオブジェクトと変数を使用できます。ただし、プロシージャを作成するコードを実行する場合、作成されたプロシージャは、作成元のプロシージャのスコープを継承しないことに注意してください。

新しいプロシージャのスコープは、他のプロシージャと同様にグローバルであり、グローバル スコープに含まれるすべてを継承します。一方コンテキストは、他のプロシージャとは異なりグローバルでないので、Execute ステートメントを実行したプロシージャのコンテキストでしか実行できません。ただし、プロシージャの外部 (グローバル スコープの内部) で呼び出された場合、Execute ステートメントはグローバル スコープに含まれるすべてを継承し、コンテキストがグローバルなので、どこからでも呼び出せます。次のコードは、この機能の使用例です。

Dim X   ' グローバル スコープで X を宣言します。
X = "Global"   ' グローバルな X に値を代入します。
Sub Proc1   ' プロシージャを宣言します。
   Dim X   ' ローカル スコープで X を宣言します。
   X = "Local"    ' ローカルな X に値を代入します。
            ' 呼び出されると X を出力するプロシージャを、
            ' Execute ステートメントで作成します。
            ' グローバル スコープに含まれるすべてを Proc2 が
            ' 継承するため、グローバルな X が出力されます。
   Execute "Sub Proc2: Print X: End Sub"
   Print Eval("X")   ' ローカルな X を出力します。
   Proc2   ' Proc1 のスコープで Proc2 を呼び出します。
End Sub
Proc2   ' Proc1 の外部で Proc2 を使用できないため、
        ' この行でエラーが発生します。
Proc1   ' Proc1 を呼び出します。
   Execute "Sub Proc2: Print X: End Sub"
Proc2   ' Proc2 をグローバルに使用できるように
        ' なったので、この呼び出しは成功します。

次のコードは、プロシージャ全体をダブル クォーテーションで囲まなくて済むように Execute ステートメントを書き換えた例です。

S = "Sub Proc2" & vbCrLf
S = S & "   Print X" & vbCrLf 
S = S & "End Sub"
Execute S

必要条件

バージョン 5

参照

Eval 関数 | ExecuteGlobal ステートメント