Dim ステートメント

変数を宣言して、記憶域を割り当てます。

構文

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


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

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

lower で明示的に指定していないときには、配列の下限が Option Base ステートメントによって制御されます。 Option Base ステートメントが存在しない場合、下限は 0 になります。
New 省略可能。 オブジェクトの暗黙的な作成を可能にするキーワードです。 オブジェクト変数の宣言時に New を使用すると、その変数を最初に参照したときにオブジェクトの新しいインスタンスが作成されるようになり、Set ステートメントを使用してオブジェクト参照を割り当てる必要がなくなります。

New キーワード は、任意の組み込みデータ型の変数 を宣言したり、依存オブジェクトのインスタンスを宣言したりするために使用できません 。WithEvents では使用できません。
type 省略可能。 変数のデータ型です。ByteBooleanIntegerLongCurrencySingleDoubleDecimal (現在サポートされていません)、DateString (可変長文字列の場合)、String length (固定長文字列の場合)、ObjectVariantユーザー定義型、または オブジェクト型を指定できます。 宣言する変数 ごとに個別の As 型句を使用します。

注釈

モジュール レベルDim により宣言された変数は、モジュール内のすべてのプロシージャで使用できます。 プロシージャ レベルでは、変数はプロシージャ内でのみ使用できます。

変数の データ型 を宣言するには、モジュールまたはプロシージャ レベルの Dim ステートメントを使用します。 たとえば、以下のステートメントは変数を Integer として宣言します。

Dim NumberOfEmployees As Integer 

また、変数のオブジェクト型を宣言する目的で、Dim ステートメントを使用します。 以下はワークシートの新しいインスタンスの変数を宣言します。

Dim X As New Worksheet 

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

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

データ型またはオブジェクト型を指定しない場合に、モジュールに Def_type_ ステートメント がない場合、変数は既定で Variant です。 変数の初期化時に、数値変数は 0 に、可変長文字列は長さ 0 の文字列 ("") に、固定長文字列は 0 で埋められた文字列に初期化されます。 Variant 変数は、Empty に初期化されます。 さらに、バリアント型 (Variant) 変数は空に初期化され、ユーザー定義型変数の各要素は、個別の変数のように初期化されます。

注意

プロシージャで Dim ステートメントを使用するとき、通常、Dim ステートメントをプロシージャの最初に配置します。

この例では、変数を宣言する目的で使用された Dim ステートメントを示しています。 また、配列を宣言する目的で使用された Dim ステートメントも示しています。 配列の下付き文字の既定の下限は 0 で 、Option Base ステートメントを使用してモジュール レベルでオーバーライドできます。

' AnyValue and MyValue are declared as Variant by default with values 
' set to Empty. 
Dim AnyValue, MyValue 
 
' Explicitly declare a variable of type Integer. 
Dim Number As Integer 
 
' Multiple declarations on a single line. AnotherVar is of type Variant 
' because its type is omitted. 
Dim AnotherVar, Choice As Boolean, BirthDate As Date 
 
' DayArray is an array of Variants with 51 elements indexed, from 
' 0 thru 50, assuming Option Base is set to 0 (default) for 
' the current module. 
Dim DayArray(50) 
 
' Matrix is a two-dimensional array of integers. 
Dim Matrix(3, 4)As Integer 
 
' MyMatrix is a three-dimensional array of doubles with explicit 
' bounds. 
Dim MyMatrix(1 To 5, 4 To 9, 3 To 5)As Double 
 
' BirthDay is an array of dates with indexes from 1 to 10. 
Dim BirthDay(1 To 10)As Date 
 
' MyArray is a dynamic array of variants. 
Dim MyArray()

関連項目

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

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