Dim в vba что это
Описывает переменные и выделяет для них память.
Dim [WithEvents] имяПеременной[([индексы])] [As [New] тип] [, [WithEvents] имяПеременной[([индексы])] [As [New] тип]] . . .
Параметры
WithEvents
Необязательный. Ключевое слово, указывающее, что имяПеременной является объектной переменной, которая используется при отклике на события, генерируемые объектом ActiveX. Применяется только в модулях класса. Пользователь имеет возможность описать с помощью ключевого слова WithEvents произвольное количество отдельных переменных, однако при этом не допускается создание массивов. Не допускается также использование ключевого слова New с ключевым словом WithEvents.
имяПеременной
Обязательный. Имя переменной, удовлетворяющее стандартным правилам именования переменных.
индексы
Необязательный. Размерности переменной массива; допускается описание до 60 размерностей. Для задания аргумента индексы используется следующий синтаксис:
[нижний To] верхний [, [нижний To] верхний] . . .
Если нижний индекс не задан явно, нижняя граница массива определяется инструкцией Option Base. Если отсутствует инструкция Option Base, нижняя граница массива равняется нулю.
New
Необязательный. Ключевое слово, включающее возможность неявного создания объекта. Если указано ключевого слова New при описании объектной переменной, новый экземпляр объекта создается при первой ссылке на объект, поэтому нет необходимости присваивать ссылку на объект с помощью инструкции Set. Ключевое слово New нельзя использовать для описания переменных любых внутренних типов данных, для описания экземпляров зависимых объектов, а также вместе с ключевым словом WithEvents. тип
Необязательный. Тип данных переменной; поддерживаются типы Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (в настоящее время не поддерживается), Date, String (для строк переменной длины), String* длина (для строк фиксированной длины), Object, Variant, определяемый пользователем тип или объектный тип. Для каждой описываемой переменной следует использовать отдельное предложение As тип.
Замечания Переменные, описанные с помощью ключевого слова Dim на уровне модуля, доступны для всех процедур в данном модуле. Переменные, описанные на уровне процедуры, доступны только в данной процедуре.
Инструкция Dim предназначена для описания типа данных переменной на уровне модуля или процедуры. Например, следующая инструкция описывает переменную с типом Integer.
Dim NumberOfEmployees As Integer
Инструкция Dim предназначена также для описания объектного типа переменных. Далее приводится описание переменной для нового образца листа электронной таблицы.
Dim X As New Worksheet
Если при описании объектной переменной не используется ключевое слово New, то для использования объекта, на который ссылается переменная, существующий объект должен быть с помощью инструкции Set присвоен переменной. До присвоения объекта описанная объектная переменная имеет специальное значение Nothing, которое указывает, что она не содержит ссылку на какой-либо определенный экземпляр объекта.
Имеется также возможность применять инструкцию Dim с пустыми скобками для описания динамического массива. После описания динамического массива, воспользуйтесь инструкцией ReDim в процедуре для определения числа размерностей и элементов массива. При попытке переопределить размерности переменной-массива, чей размер был явно указан в инструкции Private, Public или Dim, возникает ошибка.
Если тип данных или тип объекта не задан, и в модуле отсутствует инструкция DefТип, по умолчанию переменная получает тип Variant.
При инициализации переменных числовая переменная получает значение 0, строка переменной длины получает значение пустой строки («»), а строка фиксированной длины заполняется нулями. Переменные типа Variant получают при инициализации значение Empty. Каждый элемент переменной определяемого пользователем типа при инициализации получает значение, которые он получил бы, если бы являлся отдельной переменной.
При использовании инструкции Dim в процедуре ее обычно помещают в начало процедуры.
Пример
В данном примере инструкция Dim используется для объявления переменных и массивов. По умолчанию нижняя граница индексов массива равняется 0; для ее изменения следует использовать инструкцию Option Base на уровне модуля.
' По умолчанию AnyValue и MyValue являются переменными типа Variant ' и имеют пустые значения. Dim AnyValue, MyValue ' Явно объявляет переменную типа Integer. Dim Number As Integer ' Несколько объявлений на одной строке. AnotherVar является переменной ' типа Variant, поскольку ее тип опущен. Dim AnotherVar, Choice As Boolean, BirthDate As Date ' DayArray является массивом, состоящим из 51 элемента типа Variant. ' Индексы элементов массива лежат в диапазоне от 0 до 50, если для ' текущего модуля используемая по умолчанию нижняя граница элементов ' массива (0) не изменена с помощью инструкции Option Base. Dim DayArray(50) ' Matrix является двумерным массивом значений типа Integer. Dim Matrix(3, 4) As Integer ' MyMatrix является трехмерным массивом значений типа Double с явно ' заданными границами индексов. Dim MyMatrix(1 To 5, 4 To 9, 3 To 5) As Double ' BirthDay является массивом дат с индексами от 1 до 10. Dim BirthDay(1 To 10) As Date ' MyArray является динамическим массивом значений типа Variant. Dim MyArray()
Dim в vba что это
Argument ‘Topic id’ is null or empty
Сейчас на форуме
© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
| ООО «Планета Эксел» ИНН 7735603520 ОГРН 1147746834949 |
ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |
Оператор Set
Назначает ссылку на объект переменной или свойству.
Синтаксис
Setobjectvar= <[ New ] objectexpression | Nothing >
Синтаксис оператора Set состоит из следующих элементов.
| Part | Описание |
|---|---|
| objectvar | Обязательно. Имя переменной или свойства; соответствует стандартным соглашениям об именовании переменных. |
| New | Необязательный параметр. New обычно используется во время объявления разрешения создания неявных объектов. Когда New используется с Set, он создает новый экземпляр класса. Если objectvar содержал ссылку на объект, эта ссылка освобождается, когда назначается новая. Ключевое словоNew не может использоваться для создания новых экземпляров любого встроенного типа данных и не может использоваться для создания зависимых объектов. |
| выражение objectexpression | Обязательно. Выражение, состоящее из имени объекта, другой объявленной переменной того же типа объекта или функции, или метода, которые возвращают объект того же типа объекта. |
| Nothing | Необязательный параметр. Прекращает связь objectvar с любым определенным объектом. При назначении значения Nothingобъекту objectvar освобождаются все системные ресурсы и ресурсы памяти, связанные с ранее указанным объектом, если на него не ссылается никакая другая переменная. |
Замечания
Чтобы элемент objectvar был допустимым, он должен представлять собой тип объекта, согласующийся с назначаемым ему объектом.
Операторы Dim, Private, Public, ReDim и Static только объявляют переменную, которая ссылается на объект. Ссылка на фактический объект не задается, до тех пор пока оператор Set используется для назначения определенного объекта.
В следующем примере показано, как используется Dim для объявления массива с типом Form1 . Экземпляр на Form1 самом деле не существует. Затем Set назначает ссылки на новые экземпляры Form1 переменной myChildForms . Такой код можно использовать для создания дочерних форм в приложении MDI.
Dim myChildForms(1 to 4) As Form1 Set myChildForms(1) = New Form1 Set myChildForms(2) = New Form1 Set myChildForms(3) = New Form1 Set myChildForms(4) = New Form1
Обычно, когда используется Set для назначения переменной ссылки на объект, для этой переменной не создается копия объекта. Вместо этого создается ссылка на объект. Несколько объектных переменных могут ссылаться на один и тот же объект. Поскольку такие переменные являются, скорее, ссылками на объект, чем копиями объекта, любое изменение в объекте отражается во всех переменных, которые на него ссылаются. Однако, когда ключевое слово New используется в операторе Set, фактически создается экземпляр объекта.
Пример
В этом примере используется оператор Set, чтобы назначить переменным ссылки на объекты. Предполагается, что YourObject представляет собой допустимый объект со свойством Text.
Dim YourObject, MyObject, MyStr Set MyObject = YourObject ' Assign object reference. ' MyObject and YourObject refer to the same object. YourObject.Text = "Hello World" ' Initialize property. MyStr = MyObject.Text ' Returns "Hello World". ' Discontinue association. MyObject no longer refers to YourObject. Set MyObject = Nothing ' Release the object.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
В чем разница между Dim и Const в языке VBA?
Добрый день
Объясните разницу между Dim и Const. Знаю что обе команды объявляют переменные, но в чем должна быть разница использования этих переменных ?
- Вопрос задан 08 апр. 2023
- 90 просмотров
Комментировать
Решения вопроса 1
Const — константы, а не литералы. после инициализиции их не изменить. плюс как то по другому храняться в памяти.
'Declare Private Integer constant. Private Const MyInt As Integer = 5 MyInt = 6 ' эта строка не выполнится.
DIM — объявление переменных.
'Declare Private Integer variable. Dim MyInt As Integer MyInt = 5 MyInt = 6
P.S. вопрос из серии «мне очень сильно лень искать хоть что то и минимально читать документацию».
зачем создавать вопрос если ответ в первой ссылке в поиске.