§0 プログラミングを始める前に VB6
 (5) 変数の有効範囲 前へ 目次へ 次へ 

 変数を宣言する場所によって参照(利用)できる範囲が変わる。大まかにローカル変数とグローバル変数に分けられる。次のサンプルで確認してみる。  (VBでは“変数の適用範囲”という)
 新規フォームを用意し、コマンドボタンを2つ配置し、次のプログラムを入力する。

Dim gdata As Integer

Private Sub Command1_Click()        'ここから Command1_Clickプロシージャ
    Dim dat1 As Integer
    gdata = 2
    dat1 = 3
    MsgBox gdata + dat1 + dat2
End Sub                             'ここまで

Private Sub Command2_Click()        'ここから Command2_Clickプロシージャ
    Dim dat2 As Integer
    dat2 = 5
    MsgBox gdata + dat1 + dat2
End Sub                             'ここまで

 プログラムでは、Command1_Clickプロシージャの中で変数dat1が整数型で宣言されている。Command2_Clickプロシージャの中で変数dat2が整数型で宣言されている。プロシージャの外(範囲外)で変数gdataが整数型で宣言されている。次の順で実行して確認してみる。

@ ボタン(Command1)をクリックする。 → gdata+dat1+dat2の計算結果、5と表示される。
 gdata=2 と dat1=3 が実行され、gdata+dat1+dat2が計算されて表示される。このとき、dat2には値が記憶されていないので、0である。したがって gdata+dat1+dat2=2+3+0=5 となる。
A ボタン(Command2)をクリックする。 → gdata+dat1+dat2の計算結果、7と表示される。
 dat2=5 が実行され、gdata+dat1+dat2が計算されて表示される。このとき、gdataとdat2にはCommand1_Clickプロシージャでそれぞれ2と3が記憶されているがgdata+dat1+dat2=2+3+5=10 とはならない。7になるためには gdata+dat1+dat2=2+0+5=7 であり、dat1が0であると考えられる。
B ボタン(Command1)をクリックする。 → gdata+dat1+dat2の計算結果、5と表示される。
 gdata=2 と dat1=3 が実行され、gdata+dat1+dat2が計算されて表示される。このとき、dat2は5のはずであるが、0である。したがって gdata+dat1+dat2=2+3+0=5 となる。

 変数dat1とdat2はそれぞれ宣言されているプロシージャの中だけで有効であるためである。このように限られた範囲内だけで有効なのでローカル変数または局所変数という。
 プロシージャ外で宣言されている変数gdataはどのプロシージャ内でも有効である。ローカル変数に対してグローバル変数または大域変数という。

 次のように、変数宣言を強制するOption Explicitを追加して実行してみる。

Option Explicit         '追加
Dim gdata As Integer

 実行するとウィンドウが表示され、ボタン(Command1またはCommand2)をクリックすると「変数が定義されていません」というエラーが発生する。

 このほかにもいろいろと範囲があるが、とりあえずローカル変数とグローバル変数の違いは押さえておこう。


 (5) 変数の有効範囲 前へ 目次へ 次へ 
Copyright © 2001,2002 Hiroshi Masuda 

 

 

inserted by FC2 system