Dim ステートメントDim statement

変数を宣言して、記憶域を割り当てます。Declares variables and allocates storage space.


Dim [ WithEvents ] varname [([添字]) __ ] [ as [新規]] [, **** [] の型] [([下付き])] [ as [ new ] type ]]. . .Dim [ WithEvents ] varname [ ( [ subscripts ] ) ] [ As [ New ] type ] [ , [ WithEvents ] varname [ ( [ subscripts ] ) ] [ As [ New ] type ]] . . .

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

パーツPart 説明Description
WithEventsWithEvents 省略可能。Optional. varnameオブジェクト変数であり、ActiveX オブジェクトによってトリガーされたイベントに応答するために使用されることを示すキーワードです。Keyword that specifies 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を使用して配列を作成することはできません。You can declare as many individual variables as you like by using WithEvents, but you can't create arrays with WithEvents. WithEventsNew と共に使用することはできません。You can't use New with WithEvents.
varnamevarname 必須。Required. 変数の名前です。標準の変数の名前付け規則に従ってください。Name of the variable; follows standard variable naming conventions.
subscriptssubscripts Optional.Optional. 配列変数の次元です。最大 60 までの多次元を宣言できます。Dimensions of an array variable; up to 60 multiple dimensions may be declared. _添字_引数には、次の構文を使用します。 [ lower to ] upper [, [ lower to ] upper ] ....The subscripts argument uses the following syntax: [ lower To ] upper [ , [ lower To ] 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キーワードを使用して、任意の組み込みデータ型の変数を宣言したり、依存オブジェクトのインスタンスを宣言したりすることはできません。これは、 WithEventsと共に使用することはできません。The New keyword can't be used to declare variables of any intrinsic data type or 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 you declare.


モジュール レベルDim により宣言された変数は、モジュール内のすべてのプロシージャで使用できます。Variables declared with Dim at the module level are available to all procedures within the module. プロシージャ レベルでは、変数はプロシージャ内でのみ使用できます。At the procedure level, variables are available only within the procedure.

変数のデータ型を宣言するには、モジュールまたはプロシージャレベルでDimステートメントを使用します。Use the Dim statement at the module or procedure level to declare the data type of a variable. たとえば、以下のステートメントは変数を Integer として宣言します。For example, the following statement declares a variable as an Integer.

Dim NumberOfEmployees As Integer 

また、変数のオブジェクト型を宣言する目的で、Dim ステートメントを使用します。Also use a Dim statement to declare the object type of a variable. 以下はワークシートの新しいインスタンスの変数を宣言します。The following declares a variable for a new instance of a worksheet.

Dim 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.

また、Dim ステートメントは、動的配列であることを宣言する空のカッコと共に使用できます。You can also use the Dim 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.

データ型またはオブジェクト型を指定しない場合、モジュールに**Def_type_** ステートメントが含まれていない場合、変数は既定でVariantになります。If you don't specify a data type or object type, and there is no Def_type_ 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. さらに、バリアント型 (Variant) 変数は空に初期化され、ユーザー定義型変数の各要素は、個別の変数のように初期化されます。Each element of a user-defined type variable is initialized as if it were a separate variable.


プロシージャで Dim ステートメントを使用するとき、通常、Dim ステートメントをプロシージャの最初に配置します。When you use the Dim statement in a procedure, you generally put the Dim statement at the beginning of the procedure.


この例では、変数を宣言する目的で使用された Dim ステートメントを示しています。This example shows the Dim statement used to declare variables. また、配列を宣言する目的で使用された Dim ステートメントも示しています。It also shows the Dim statement used to declare arrays. 配列の添字の既定の下限は0で、 Option Baseステートメントを使用してモジュールレベルで上書きすることができます。The default lower bound for array subscripts is 0 and can be overridden at the module level by using the Option Base statement.

' 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()

関連項目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.