§3 複数のフォーム VB6
 (4) 変数の適用範囲 前へ 目次へ 次へ 

 プログラムはコンピュータに与える命令・計算式の集まりである。処理に必要なデータは変数や配列に記憶させる。入力されたデータも計算式の結果も変数に記憶する。そして、変数に記憶させた入力データや計算結果は、次の命令で利用される。このように、変数はプログラミングに欠かすことのできないものである。

 複数のフォームを用意したとき、フォーム間で変数をやりとりする方法を学習する。すなわち、フォームAで求めた結果をフォームBで利用する方法である。このとき、結果は変数に記憶させておくが、変数にはローカル変数やグローバル変数があったように利用できる有効範囲が決められている。この利用できる有効範囲をVisualBasicでは「変数の適用範囲」という。

 1. ローカル変数とグローバル変数(復習)

 変数にはローカル変数とグローバル変数があった。ローカル変数はプロシージャ内だけで使われる変数で、ほかのプロシージャで同じ名前の変数が使われていたとしても別のものとして扱われる。

例1 新規フォームを用意して、ラベル2つ(Label1, Label2)とコマンドボタン2つ(Command1, Command2)を配置する。プログラムは次の通りである(説明のため宣言を強制するOption Explicitは省略)。

Private Sub Command1_Click()
    a = 12345
    Label1.Caption = a
End Sub

Private Sub Command2_Click()
    Label2.Caption = a
End Sub

 実行して、ボタンをクリックするとラベルに変数aの値が表示される。
 ボタン1(Command1)をクリックするとラベル1に"12345"と表示される。ボタン2をクリックするとラベル2には何も表示されない。すなわち、Command1_ClickプロシージャとCommand2_Clickプロシージャで使われている変数aは別のものとして処理されていることがわかる。

実行結果
ボタン1をクリック ボタン2をクリック
12345 表示なし

 グローバル変数はプログラム(モジュール)内のすべてのプロシージャから利用できる。グローバル変数は(General)の(Declarations)で宣言する必要がある。

例2 例1のプログラムに変数aの宣言を追加してグローバル変数とする。
    オブジェクトが(General)、プロシージャが(Declarations)の部分にDim a As Integer の1行を追加する。

Dim a As Integer    '←追加

Private Sub Command1_Click()
    a = 12345
    Label1.Caption = a
End Sub

Private Sub Command2_Click()
    Label2.Caption = a
End Sub
実行結果
ボタン1をクリック ボタン2をクリック
12345 12345

 変数aがグローバル変数として処理されるため、Command1_ClickプロシージャとCommand2_Clickプロシージャの変数aは同じものとして扱われる。


 (4) 変数の適用範囲 前へ 目次へ 次へ 
Copyright © 2002 Hiroshi Masuda 

 

 

inserted by FC2 system