このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

VBAでグローバル変数を定義する方法(モジュールレベル変数)

2024年1月13日

VBAでグローバル変数を定義する方法

タイトルにグローバル変数と書きましたが、厳密にはVBAにはグローバル変数はありません。

一般的にグローバル変数はどの場所からも参照できる変数のことです。

VBAでこれに該当する変数はモジュールレベル変数になります。

今回はこのモジュールレベル変数がどのようなものかを紹介します。

VBAが難しいと感じたら
VBAのプロに代わりに作ってもらうのはいかがでしょうか?
ココナラでVBAの作成請負を受け付けています。お気軽にご相談ください。

VBAのグローバル変数(モジュールレベル変数)とはどのようなものか

変数宣言の方法

'モジュールの先頭
Public pubAbc As String 'Public:他のモジュールからも参照可能
Private priAbc As String 'Private:他のモジュールからは参照不可
Sub Procedure()
    
End Sub

先にモジュールレベル変数の宣言方法について説明します。

モジュールレベル変数はモジュール(標準モジュールやシートモジュールなど)の先頭に記載します。

正確にはプロシージャよりも上に記載すればモジュールレベル変数になります。

モジュールレベル変数のスコープ

'モジュールの先頭
Public pubAbc As String 'Public:他のモジュールからも参照可能
Private priAbc As String 'Private:同じモジュール内から参照可能

変数のスコープはPublicで宣言するかPrivateで宣言するかにより変わります。

Publicで宣言すると一般的にいうグローバル変数になります。

どのモジュールのプロシージャからも参照可能な変数となります。

VBAでグローバルな変数を作りたい場合はモジュールの先頭に記載してPublicで宣言すると覚えてください。

PublicとPrivateの違い

モジュールレベル変数は、Publicで宣言したときとPrivateで宣言したときでスコープ(参照可能な範囲)が違います。

PublicとPrivateの違い
Publicどのモジュールのプロシージャからも参照可能
Private同じモジュールのプロシージャから参照可能
PublicとPrivateの違い

スコープ(参照可能な範囲)の違いをまとめると、↑の表のようになります。

Publicで宣言すると、どのモジュールからも参照可能となります。(例えば、Module1の変数にModule2から参照できる)

Privateで宣言すると、同じモジュールのプロシージャから参照可能となります。
逆にいうと、他のモジュールからは参照することができません。

他のモジュールからも参照したいときはPublicに、同じモジュールからしか参照しないときはPrivateと、使い分けておくのがGoodです。

VBAが難しいと感じたら
VBAのプロに代わりに作ってもらうのはいかがでしょうか?
ココナラでVBAの作成請負を受け付けています。お気軽にご相談ください。

VBA

Posted by やろまい