
No.1ベストアンサー
- 回答日時:
少し厳しいかもしれませんが、ご自分でサンプルコードを書いて実行してみましたか?
そういう経験の積み重ねが土台を作る一つの要因になるのだと私は思っています。
もしも検証できない状況にあるのでしたら、ごめんなさい。
かく言う私自身、VBScriptには明るくないので、正しいかどうかわかりませんが、
結論から言うと以下の通りかと思っています。
■結論
・グローバル領域(=いかなるプロシージャにも所属しない領域)で宣言された変数は、どこからでも参照可
・プロシージャ内(←ネストレベルは関係ない)で宣言された変数は当該プロシージャ内のみで有効
・プロシージャのネスト時に参照可能な変数は、グローバル変数と自プロシージャ内で宣言された変数のみ(=自分を呼び出した親プロシージャ内の変数を参照することはできない)
・プロシージャの引数がグローバル変数と同名の場合、引数が優先される
・条件分岐やループの内側か外側かは関係ない(内側で宣言した変数を外側で参照できる)
#プロシージャ≒「ファンクション」です。
■参考URL
http://www.google.com/search?q=vbscript+%E5%A4%8 …
http://www.keynus.co.jp/~uhara/html/vbscript/16. …
これで答えになっているでしょうか??
No.3
- 回答日時:
VBScript の場合は、Sub プロシージャやFunction 関数、プロシージャの外で変数の宣言を行えば、グローバル・スコープになるし、各々のSub - End Sub や Function - End Functionの中で変数の宣言を行えば、その範囲のローカルのスコープになります。
これ自体は、VBなどと変わらないです。具体的な問題を抱えているなら、その例をあげていただいたほうが話が早いです。こういう総体的な話では、これだけの話にしかならないはずです。サブルーチンやFunction の引数の話はスコープとは別問題です。No.2
- 回答日時:
回答番号:No.1で回答した者です。
一応テストコードを載せておきますので試してみてください。
エラーになる箇所は適宜コメントアウトしてくださいね。
'------------------------------------------------------------
'テストコード
'------------------------------------------------------------
option explicit
'グローバルな領域で変数を宣言、値を代入します
dim hoge
hoge = "グローバル変数"
print(hoge)
'実行環境が不明なので出力の窓口を下記プロシージャで統一します
sub print(str)
wscript.echo str
'response.write str & "<br />"
end sub
'引数なしのsubプロシージャ
sub sub_without_arg()
print(hoge)
end sub
'グローバル変数と同名の引数をとるsubプロシージャ
sub sub_with_arg(hoge)
print(hoge)
end sub
'引数なしのfuncitonプロシージャ
function func_without_arg()
print(hoge)
end function
'グローバル変数と同名の引数をとるfuncitonプロシージャ
function func_with_arg(hoge)
print(hoge)
end function
'テスト実行
sub_without_arg()
sub_with_arg("subの引数")
func_without_arg()
func_with_arg("funcの引数")
'条件分岐の中で宣言した変数を条件分岐の外側から参照
if true then
dim hoge_if
hoge_if = "条件分岐の中で宣言した変数"
end if
print(hoge_if)
'ループの中で宣言した変数をループの外側から参照
do
dim hoge_loop
hoge_loop = "ループの中で宣言した変数"
loop while(false)
print(hoge_loop)
'「ファンクションの中のファンクション」確認用 外側
function outer_function()
dim fuga : fuga = "外側のプロシージャで宣言した変数"
inner_function()
end function
'「ファンクションの中のファンクション」確認用 内側
function inner_function()
print(fuga)
end function
'外側の変数を内側から参照できるか
outer_function()
'プロシージャ内で宣言した変数をグローバル領域から参照できるか
print(fuga)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【VB6.0】 あるフォームから他...
-
プロシージャまたは関数の引数...
-
テキストボックスかラベル上の...
-
texで図と表を並べたい
-
C#のループでtextboxに値を入れ...
-
vbsでスクロール位置を指定して...
-
エクセル・VBAでテキストボック...
-
VB.netである関数を呼んで、そ...
-
vbsのmsgboxランダム表示について
-
画像の90度回転表示の処理時間...
-
VBでExcel上PictureBoxダブルク...
-
ClickとChangeイベントの違いは...
-
エクセルVBAでテキストボッ...
-
FlexGridで文字色を変更。
-
VBA public変数はどのようなこ...
-
visual basic初心者です。 visu...
-
VB6 レコードセットの編集
-
VBAで入力数値について
-
VB.NETでのイベントの途中終了
-
Functionの戻り値を配列にした...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VB6.0】 あるフォームから他...
-
パーソナルXLSBのfuctionを呼び...
-
【HTML、VBScript】HTAアプリケ...
-
定数を構造体で・・・
-
プロシージャまたは関数の引数...
-
VB6のFriendについて
-
VB6の変数宣言について
-
引き渡したループ処理で変数がn...
-
Callで呼び出したプロシージャ...
-
excellvbaで
-
PL/SQLのプロシージャ間でカー...
-
ArrayListに格納したクラス内の...
-
文字列をINTEGER型に変換
-
VBA subで戻り値指定するか宣言...
-
整数を二つ読み込み、それらの...
-
VB2010からPROCEDUREを実行でエ...
-
変数の宣言はすべきでしょうか...
-
【VBScript】変数のスコープ
-
VB初心者の私に教えてください!
-
エクセルVBAでテキストボッ...
おすすめ情報