Globalの概要
| プロジェクト全体で使用できる変数を宣言する VBAの予約語 | ||
|
Global 概要 Global ステートメントは、VBAの標準モジュール内で宣言し、プロジェクト全体(すべてのモジュール)で使用できる変数を定義するために使用されます。Global で宣言された変数は、どのモジュールやプロシージャからでも参照・変更できます。 わかりやすく説明 プロジェクト内のすべてのモジュールで使える変数を作る命令。 |
||
|
Globalを使った基本的な変数の宣言
以下の例では、Global を使って変数を定義し、別のプロシージャで使用します。
' 標準モジュール(Module1)内に記述
Global GlobalMessage As String
Sub SetMessage()
GlobalMessage = "こんにちは、VBA!"
End Sub
Sub ShowMessage()
MsgBox GlobalMessage
End Sub
解説:
Global GlobalMessage As String: すべてのモジュールで使用できる変数を宣言。SetMessage: 変数に値を代入。ShowMessage: 他のプロシージャから Global 変数を参照。
Global変数を使ったExcel VBAでの活用
以下の例では、Global 変数を使ってExcelのシート名を管理し、異なるプロシージャで参照します。
' 標準モジュール(Module1)内に記述
Global SheetName As String
Sub SetSheet()
SheetName = "データシート"
End Sub
Sub SelectSheet()
Sheets(SheetName).Select
End Sub
解説:
SetSheetでシート名を設定。SelectSheetで Global 変数を使い、そのシートを選択。
GlobalとPublicの違い
Global と Public は似ていますが、Public はクラスモジュールや標準モジュールのどちらでも使えるのに対し、Global は標準モジュール内でのみ使用できます。
' 標準モジュール(Module1)内に記述
Global GlobalVar As Integer
' クラスモジュール(Class1)内に記述
Public ClassVar As Integer
解説:
GlobalVar: 標準モジュール内で定義し、プロジェクト全体で使用可能。ClassVar: クラスモジュールで定義し、オブジェクトのインスタンスごとに管理される。
Globalの注意事項
- クラスモジュールでは使用不可: Global は標準モジュールでのみ有効。
- 不要なGlobal変数の使用は避ける: 変数の管理が難しくなり、バグの原因になる。
- 変数の初期化に注意: Global変数はVBAプロジェクトが閉じられるまで値を保持する。
よくある質問
- Q: Global はどこで使用できますか?
- A: 標準モジュール内でのみ使用可能で、プロジェクト全体で参照できます。
- Q: Global 変数をクリアする方法は?
- A: 変数に
Nothingを代入するか、VBAプロジェクトを再起動してください。 - Q: Global を使うより良い方法は?
- A: 可能であれば、Public 変数やプロパティを使って、スコープを適切に管理するほうが良いです。
まとめ
- Global ステートメントは、プロジェクト全体で使用できる変数を宣言する。
- 標準モジュール内でのみ使用可能で、クラスモジュールでは使用できない。
- Excel VBAで設定値やデータの共有に便利だが、使いすぎると管理が難しくなる。
- 可能であれば、Public やプロパティを使ってスコープを適切に制限する。