変数がある。それぞれの変数の宣言と有効は下記の通りである。但し、
Global については、(VB の Public と同様の有効範囲であると推察される
が) どのような場面で使用するのか全く思いつかない為、ヘルプの内容を
ほぼそのまま記載させて頂いた。
1. Global 変数
LibreOffice セッション終了時まで有効な変数。他のドキュメントから
アクセスすることが可能と思われる。書式は下記の通り :
Global Varname As Typename
2. Public 変数
ドキュメント (プロジェクト) 内の全てのモジュールからアクセスすること
が可能。書式は下記の通り :
Public Varname As Typename
モジュール内でのみ有効な変数。モジュール内の全てのプロシージャ
や関数からはアクセス可。書式は下記の通り :
Private Varname As Typename
プロシージャ、または、関数内でのみ有効な変数。書式は下記の通り :
Dim Varname As Typename
実際のサンプルコードを以下に記す。Module1、Module2 の二つのモジュール
があるものとし、それぞれのモジュール内のプロシージャを下記の通りとする :
【Module1】
Public gstrVar As String
Private mstrVar As String
Sub Proc0()
Dim strVar As String
gstrVar = "変数gstrVarはPublic変数です"
mstrVar = "変数mstrVarはModule1のPrivate変数です"
strVar = "変数strVarはModule1のProc0のローカル変数です"
Module1.Proc2()
End Sub
Sub Proc1()
Dim strVar As String
gstrVar = "変数gstrVarはPublic変数です"
mstrVar = "変数mstrVarはModule1のPrivate変数です"
strVar = "変数strVarはModule1のProc1のローカル変数です (*)"
Module2.Proc3()
End Sub
Sub Proc2()
Dim strVar As String
strVar = "変数strVarはModule1のProc2のローカル変数です (**)"
Msgbox(gstrVar & Chr$(13) & _
mstrVar & Chr$(13) & _
strVar, 0, _
"Module1.Proc2のメッセージ")
End Sub
【Module2】
Private mstrVar As String
Sub Proc3()
Dim strVar As String
mstrVar = "変数mstrVarはModule2のPrivate変数です (***)"
strVar = "変数strVarはModule2のProc3のローカル変数です (****)"
Msgbox(gstrVar & Chr$(13) & _
mstrVar & Chr$(13) & _
strVar, 0, _
"Module2.Proc3のメッセージ")
End Sub
Module1の Proc0 プロシージャを実行した結果のメッセージボックスは
下図の通りとなる。この例からわかるように、Public と Private の値は
引き継がれることがわかる。また、Proc0 と Proc2 それぞれで宣言
されているローカル変数 strVar は、同じ名前であっても、異なる変数
であることも、この例からわかる :
Module1の Proc1 プロシージャを実行した結果のメッセージボックスは
下図の通り。Global 変数がモジュールを跨って値が保持されることが
この例からわかる :
0 件のコメント:
コメントを投稿