Public ステートメント

モジュール レベルで使用して、パブリック変数を宣言して記憶領域を割り当てます。

構文

Public [ WithEvents ] varname [ ( [ subscripts ] ) ] [ As [ New ] type ]
[ , [ WithEvents ] varname [ ( [ subscripts ] ) ] [ As [ New ] type ]] . . .

Public ステートメントの構文には、次の指定項目があります。

指定項目 説明
WithEvents 省略可能。 varname が、ActiveX オブジェクトによってトリガーされたイベントに応答するために使用されるオブジェクト変数であることを示すキーワードです。 WithEvents は、クラス モジュール内でのみ有効です。 WithEvents を使用して個別の変数をいくつでも宣言できますが、WithEvents で配列を作成することや、WithEvents と New を併用することはできません。
varname 必須。 変数の名前です。標準の名前付け規則に従ってください。
subscripts 省略可能。 配列変数の次元です。最大 60 までの多次元を宣言できます。 添字引数は、次の構文を使用します。

[ lowerTo ] upper [ , [ lowerTo ] upper ] . . .

lower で明示的に指定していないときには、配列の下限が Option Base ステートメントによって制御されます。 Option Base ステートメントが存在しない場合、下限は 0 になります。
New 省略可能。 オブジェクトの暗黙的な作成を可能にするキーワードです。 オブジェクト変数の宣言時に New を使用すると、その変数を最初に参照したときにオブジェクトの新しいインスタンスが作成されるようになり、Set ステートメントを使用してオブジェクト参照を割り当てる必要がなくなります。 New キーワードは、組み込みデータ型の変数を宣言する際には使用できません。 また、依存オブジェクトのインスタンスを宣言する際に使用することも、WithEvents と併用することもできません。
type 省略可能。 変数のデータ型。は、 Byte、 Boolean、 Integer、 Long、 Currency、 Single、 Double、 Decimal (現在サポートされていません)、 Date、 String (可変長文字列の場合)、 Stringlength (固定長文字列の場合)、 Object、 Variant、 ユーザー定義型、または オブジェクト型のいずれかです。 定義する変数ごとに個別の Astype 句を使用します。

解説

Public ステートメントを使用して宣言した変数は、すべてのアプリケーションのすべてのモジュール内のすべてのプロシージャで使用できます。ただし、Option Private Module が適用されている場合は例外で、その変数が存在するプロジェクト内でのみパブリックになります。

Public ステートメントは、クラス モジュール内で固定長文字列変数を宣言する場合には使用できません。

Public ステートメントは、変数のデータ型を宣言するために使用します。 たとえば、次のステートメントでは変数を Integer として宣言しています。

Public NumberOfEmployees As Integer 

また、Public ステートメントは、変数のオブジェクト型を宣言する場合にも使用します。 次のステートメントではワークシートの新しいインスタンスに対応する変数を宣言しています。

Public X As New Worksheet 

オブジェクト変数の宣言時に New キーワードを使用していない場合は、そのオブジェクトを参照する変数の使用前に、Set ステートメントを使用して既存のオブジェクトを割り当てておく必要があります。 オブジェクトが割り当てられるまで、宣言したオブジェクト変数には Nothing という特殊な値が設定されます。この値は、その変数がオブジェクトの特定のインスタンスを参照していないことを示します。

Public ステートメントは、動的な配列を宣言するために空のかっこと共に使用することもできます。 動的な配列を宣言した後で、その配列の次元と要素の数を定義するには、プロシージャ内で ReDim ステートメントを使用します。 Private、Public、または Dim のいずれかのステートメントでサイズが明示的に指定されている配列変数の次元を再宣言しようとすると、エラーが発生します。

データ型またはオブジェクト型を指定していない場合、モジュール内に Deftype ステートメントが存在していないと、変数は既定で Variant になります。

変数の初期化時に、数値変数は 0 に、可変長文字列は長さ 0 の文字列 ("") に、固定長文字列は 0 で埋められた文字列に初期化されます。 Variant 変数は、Empty に初期化されます。 ユーザー定義型変数の各要素は、それぞれの要素が個別の変数であるものとして初期化されます。

例

この例では、標準モジュールのモジュール レベル (General セクション) で Public ステートメントを使用することで、変数を明示的にパブリックとして宣言します。こうした変数は、すべてのアプリケーションのすべてのモジュールのすべてのプロシージャで使用できるようになります (ただし、Option Private Module が適用されていない場合に限ります)。

Public Number As Integer ' Public Integer variable. 
Public NameArray(1 To 5) As String ' Public array variable. 
' Multiple declarations, two Variants and one Integer, all Public. 
Public MyVar, YourVar, ThisVar As Integer 

関連項目

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。