Dim ステートメント

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

構文

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

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

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

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

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

注釈

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

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

Dim NumberOfEmployees As Integer 

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

Dim X As New Worksheet 

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

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

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

注:

プロシージャで 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 のサポートおよびフィードバックを参照してください。