Оператор DimDim statement

Объявляет переменные и распределяет дисковое пространство.Declares variables and allocates storage space.

СинтаксисSyntax

Dim [ WithEvents ] имя_переменной [([ подстрочные знаки ])] [ as [ New ] Type ] [, [ WithEvents ] имя_переменной [([ подстрочно ])] [ 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. Также нельзя использовать ключевое слово New с атрибутом WithEvents.You can't use New with WithEvents.
varnamevarname Обязательный.Required. Имя переменной; соответствует стандартным соглашениям об именовании переменных.Name of the variable; follows standard variable naming conventions.
индексовsubscripts Необязательно.Optional. Измерения переменной массива (поддерживается объявление до 60 измерений).Dimensions of an array variable; up to 60 multiple dimensions may be declared. Аргумент " подстрочные индексы " использует следующий синтаксис: [ нижнее значение ] Upper [, [ снизу ] сверху ] ....The subscripts argument uses the following syntax: [ lower To ] upper [ , [ lower To ] upper ] . . ..

Если не указано _явно, Нижняя_граница массива управляется оператором Option Base .When not explicitly stated in lower, the lower bound of an array is controlled by the Option Base statement. Если оператор Option Base не задан, нижняя граница равна нулю.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. Тип данных переменной; Допустимые значения: Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (в настоящее время не поддерживается), Date, String (для строк переменной длины), Длина строки (для строк фиксированной длины), Object, Variant, определяемый пользователем типили тип объекта.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. Используйте отдельное предложение as Type для каждой объявляемой переменной.Use a separate As type clause for each variable you declare.

ПримечанияRemarks

Переменные, объявляемые с помощью оператора 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. При попытке повторного объявления измерения для переменной массива, размер которой был явно указан в закрытом, общедоступном операторе или операторе 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, строке переменной длины — строка нулевой длины (""), а строка фиксированной длины заполняется нулями.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.

Примечание

Когда оператор Dim используется в процедуре, обычно этот оператор Dim располагают в начале этой процедурыWhen you use the Dim statement in a procedure, you generally put the Dim statement at the beginning of the procedure.

ПримерExample

В этом примере показывается, как используется оператор 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.