Public ステートメントPublic statement

モジュール レベルで使用して、パブリック変数を宣言して記憶領域を割り当てます。Used at the module level to declare public variables and allocate storage space.

構文Syntax

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


Public ステートメントの構文には、次の指定項目があります。The Public statement syntax has these parts:

パーツPart 説明Description
WithEventsWithEvents 省略可能。Optional. varname が、ActiveX オブジェクトによってトリガーされたイベントに応答するために使用されるオブジェクト変数であることを示すキーワードです。Keyword specifying that varname is an object variable used to respond to events triggered by an ActiveX object. WithEvents は、クラス モジュール内でのみ有効です。WithEvents is valid only in class modules. WithEvents を使用して個別の変数をいくつでも宣言できますが、WithEvents配列を作成することや、WithEventsNew を併用することはできません。You can declare as many individual variables as you like by using WithEvents, but you can't create arrays with WithEvents, nor can you use New with WithEvents.
varnamevarname 必須。Required. 変数の名前です。標準の名前付け規則に従ってください。Name of the variable; follows standard naming conventions.
subscriptssubscripts Optional.Optional. 配列変数の次元です。最大 60 までの多次元を宣言できます。Dimensions of an array variable; up to 60 multiple dimensions may be declared. subscripts 引数の構文は、次のとおりです。The subscripts argument uses the following syntax:

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

lower で明示的に指定していないときには、配列の下限が Option Base ステートメントによって制御されます。When not explicitly stated in lower, the lower bound of an array is controlled by the Option Base statement. Option Base ステートメントが存在しない場合、下限は 0 になります。The lower bound is zero if no Option Base statement is present.
NewNew オプション。Optional. オブジェクトの暗黙的な作成を可能にするキーワードです。Keyword that enables implicit creation of an object. オブジェクト変数の宣言時に New を使用すると、その変数を最初に参照したときにオブジェクトの新しいインスタンスが作成されるようになり、Set ステートメントを使用してオブジェクト参照を割り当てる必要がなくなります。If you use New when declaring the object variable, a new instance of the object is created on first reference to it, so you don't have to use the Set statement to assign the object reference. New キーワードは、組み込みデータ型の変数を宣言する際には使用できません。The New keyword can't be used to declare variables of any intrinsic data type. また、依存オブジェクトのインスタンスを宣言する際に使用することも、WithEvents と併用することもできません。It also can't be used to declare instances of dependent objects, and it can't be used with WithEvents.
typetype 省略可能。Optional. 変数のデータ型です。ByteBooleanIntegerLongCurrencySingleDoubleDecimal (現在サポートされていません)、DateString (可変長文字列の場合)、String length (固定長文字列の場合)、ObjectVariantユーザー定義型、またはオブジェクト型を指定できます。Data type of the variable; may be Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (not currently supported), Date, String (for variable-length strings), String length (for fixed-length strings), Object, Variant, a user-defined type, or an object type. 定義する変数**** ごとに、 _type_句を個別に使用します。Use a separate As type clause for each variable being defined.

解説Remarks

Public ステートメントを使用して宣言した変数は、すべてのアプリケーションのすべてのモジュール内のすべてのプロシージャで使用できます。ただし、Option Private Module が適用されている場合は例外で、その変数が存在するプロジェクト内でのみパブリックになります。Variables declared by using the Public statement are available to all procedures in all modules in all applications unless Option Private Module is in effect; in which case, the variables are public only within the project in which they reside.

Public ステートメントは、クラス モジュール内で固定長文字列変数を宣言する場合には使用できません。The Public statement can't be used in a class module to declare a fixed-length string variable.

Public ステートメントは、変数のデータ型を宣言するために使用します。Use the Public statement to declare the data type of a variable. たとえば、次のステートメントでは変数を Integer として宣言しています。For example, the following statement declares a variable as an Integer:

Public NumberOfEmployees As Integer 

また、Public ステートメントは、変数のオブジェクト型を宣言する場合にも使用します。Also use a Public statement to declare the object type of a variable. 次のステートメントではワークシートの新しいインスタンスに対応する変数を宣言しています。The following statement declares a variable for a new instance of a worksheet:

Public X As New Worksheet 

オブジェクト変数の宣言時に New キーワードを使用していない場合は、そのオブジェクトを参照する変数の使用前に、Set ステートメントを使用して既存のオブジェクトを割り当てておく必要があります。If the New keyword is not used when declaring an object variable, the variable that refers to the object must be assigned an existing object by using the Set statement before it can be used. オブジェクトが割り当てられるまで、宣言したオブジェクト変数には Nothing という特殊な値が設定されます。この値は、その変数がオブジェクトの特定のインスタンスを参照していないことを示します。Until it is assigned an object, the declared object variable has the special value Nothing, which indicates that it doesn't refer to any particular instance of an object.

Public ステートメントは、動的な配列を宣言するために空のかっこと共に使用することもできます。You can also use the Public statement with empty parentheses to declare a dynamic array. 動的な配列を宣言した後で、その配列の次元と要素の数を定義するには、プロシージャ内で ReDim ステートメントを使用します。After declaring a dynamic array, use the ReDim statement within a procedure to define the number of dimensions and elements in the array. PrivatePublic、または Dim のいずれかのステートメントでサイズが明示的に指定されている配列変数の次元を再宣言しようとすると、エラーが発生します。If you try to redeclare a dimension for an array variable whose size was explicitly specified in a Private, Public, or Dim statement, an error occurs.

データ型またはオブジェクト型を指定していない場合、モジュール内に Deftype ステートメントが存在していないと、変数は既定で Variant になります。If you don't specify a data type or object type, and there is no Deftype statement in the module, the variable is Variant by default.

変数の初期化時に、数値変数は 0 に、可変長文字列は長さ 0 の文字列 ("") に、固定長文字列は 0 で埋められた文字列に初期化されます。When variables are initialized, a numeric variable is initialized to 0, a variable-length string is initialized to a zero-length string (""), and a fixed-length string is filled with zeros. Variant 変数は、Empty に初期化されます。Variant variables are initialized to Empty. ユーザー定義型変数の各要素は、それぞれの要素が個別の変数であるものとして初期化されます。Each element of a user-defined type variable is initialized as if it were a separate variable.

Example

この例では、標準モジュールのモジュール レベル (General セクション) で Public ステートメントを使用することで、変数を明示的にパブリックとして宣言します。こうした変数は、すべてのアプリケーションのすべてのモジュールのすべてのプロシージャで使用できるようになります (ただし、Option Private Module が適用されていない場合に限ります)。This example uses the Public statement at the module level (General section) of a standard module to explicitly declare variables as public; that is, they are available to all procedures in all modules in all applications unless Option Private Module is in effect.

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 

関連項目See also

サポートとフィードバックSupport and feedback

Office VBA またはこの説明書に関するご質問やフィードバックがありますか?Have questions or feedback about Office VBA or this documentation? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.