Что такое dim vba
VBA Dim
Excel VBA Dim
DIM в VBA можно назвать, так как он объявляет переменную в различных типах данных, таких как целочисленная логическая строка или double и т. Д. В любом языке программирования переменная должна быть объявлена определенному типу данных, например, X является переменной, и если мы определяем X как целое число, которое означает, что мы можем хранить целочисленные значения в X. Теперь, если мы объявим Y как строку, это означает, что мы можем хранить строковые значения в Y.
Как обсуждалось выше, DIM в VBA используется для объявления переменных разных типов данных. Но что такое DIM в VBA? DIM означает измерение или объявить в памяти в VBA. Мы объявляем переменную для определенного типа данных в VBA, мы используем ключевое слово DIM, чтобы сделать это. Мы можем использовать структуры классов, уже встроенные в VBA, или сами можем создать новую. Чтобы дать очень простое объяснение DIM, мы можем взять это в качестве примера, например, нам нужно хранить логические значения в переменной. Логические значения означают, что они либо истинны, либо ложны. Теперь логические значения, как мы знаем, являются логическими в типах данных, поэтому нам нужно объявить нашу переменную в логическом типе данных.
Если мы говорим, что переменная X должна хранить значение в логическом значении, нам нужно объявить X как логическую переменную, чтобы она могла хранить желаемый тип данных.
Использование DIM с синтаксисом в VBA выглядит следующим образом:
Переменная DIM As DataType.
Когда мы пытаемся определить конкретный тип данных, Excel предварительно вводит его для нас.
Посмотрите на скриншот ниже,
Excel определяет по ключевым словам, которые мы вводим, и отображает возможные типы данных, которые мы могли бы использовать.
Как использовать VBA Dim в Excel?
Мы научимся использовать VBA Dim на нескольких примерах в Excel.
Во-первых, давайте использовать Integer в качестве типа данных для объявления. Мы будем использовать три переменные и объявим каждую из них как целые числа, используя ключевое слово DIM. И тогда мы будем отображать окончательный результат.
Подсказка. Чтобы использовать VBA в Excel, нам нужно включить доступ для разработчиков с помощью учетной записи на вкладке «Файл».
Шаг 1. Перейдите на вкладку « Разработчик » и щелкните Visual Basic, чтобы открыть редактор VBA.
Шаг 2: В окне проекта нажмите на лист 1, чтобы открыть окно кода.
Шаг 3: Когда откроется окно кода, чтобы объявить подфункцию, чтобы начать писать код.
Шаг 4: Объявите три переменные A, B и C как целые числа.
Шаг 5: присвойте этим трем переменным любые случайные значения.
Шаг 6: Показать значения C с помощью функции msgbox.
Шаг 7: Запустите код с помощью кнопки запуска. Как только мы запустим код, мы получим следующий результат в качестве вывода.
Шаг 8: Поскольку A, B и C были объявлены как целое число, а сумма A и B также является целым числом, может отображаться значение, сохраненное в C. Но если мы изменим значение C = A / B, как показано на скриншоте ниже.
Шаг 9: Теперь давайте снова запустим код и посмотрим, что мы получим в результате,
В результате мы получаем ноль, но 5/10 равен 0, 5, а не 0. Это потому, что C может хранить только целые значения, а не значения после десятичной дроби.
В предыдущем примере мы видели, что если значение результата в C находится в десятичных числах, значения после десятичных чисел не отображаются в выходных данных, потому что мы объявили C как целое число. Теперь мы будем использовать другой тип данных для объявления из функции DIM для отображения исходного значения C.
Шаг 1. Перейдите на вкладку « Разработчик » и щелкните Visual Basic, чтобы открыть редактор VBA.
Шаг 2: В окне проекта нажмите на Лист 2, чтобы открыть окно кода.
Шаг 3: Как только окно кода открыто, создайте подфункцию, чтобы начать писать код.
Шаг 4: Объявите три переменные AB и C. Объявите A и B как целые числа, а C как двойные.
Шаг 5: Аналогично примеру 1 присвойте значения этим переменным.
Шаг 6: Теперь отобразите вывод с помощью функции msgbox.
Шаг 7: Запустите код с кнопки запуска. Запустив код, мы получим следующий результат:
Теперь у нас есть точное значение C, которое составляет 0, 5.
Давайте использовать функцию DIM для хранения символов означает строки.
Шаг 1. Перейдите на вкладку « Разработчик » и щелкните Visual Basic, чтобы открыть редактор VBA.
Шаг 2: В окне проекта нажмите на Лист 3, чтобы открыть окно кода.
Шаг 3: Создайте подфункцию, чтобы начать писать код,
Шаг 4: Объявите переменную A как строку,
Шаг 5: Присвойте любые случайные значения A,
Шаг 6: Показать вывод с помощью функции msgbox.
Шаг 7: Запустите код из предоставленной кнопки запуска и посмотрите результат,
Объяснение VBA DIM
DIM в VBA используется для объявления переменных как различных типов данных. Переменные могут быть единственной переменной или массивом, который мы должны иметь в виду, чтобы объявить правильный тип данных для получения правильного вывода.
Например, если наши выходные данные будут в String, нам нужно объявить переменную в String, а если выходные данные будут в десятичных числах, то объявить переменную как double и т. Д.
То, что нужно запомнить
Есть несколько вещей, которые мы должны помнить о DIM в VBA:
Рекомендуемые статьи
Dim statement
Declares variables and allocates storage space.
Syntax
The Dim statement syntax has these parts:
When not explicitly stated in lower, the lower bound of an array is controlled by the Option Base statement. The lower bound is zero if no Option Base statement is present.
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.
Remarks
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.
Use the Dim statement at the module or procedure level to declare the data type of a variable. For example, the following statement declares a variable as an Integer.
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.
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. 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.
You can also use the Dim statement with empty parentheses to declare a dynamic array. After declaring a dynamic array, use the ReDim statement within a procedure to define the number of dimensions and elements in the array. 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.
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. 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 variables are initialized to Empty. Each element of a user-defined type variable is initialized as if it were a separate variable.
When you use the Dim statement in a procedure, you generally put the Dim statement at the beginning of the procedure.
Example
This example shows the Dim statement used to declare variables. It also shows the Dim statement used to declare arrays. The default lower bound for array subscripts is 0 and can be overridden at the module level by using the Option Base statement.
See also
Support and feedback
Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
Объявление переменных
При объявлении переменных обычно используется оператор Dim. Оператор объявления может быть помещен внутрь процедуры для создания переменной на уровне процедуры. Или он может быть помещен в начале модуля в разделе объявлений, чтобы создать переменную на уровне модуля.
В примере ниже создается переменная и указывается тип данных «String».
Если данный оператор отображается в процедуре, переменная strName может использоваться только в этой процедуре. Если же оператор отображается в разделе объявлений модуля, переменная strName доступна для всех процедур данного модуля, но недоступна для процедур других модулей проекта.
Чтобы предоставить доступ к переменной всем процедурам проекта, перед ней нужно поставить оператор Public, как показано в примере ниже:
Дополнительные сведения об именовании переменных см. в статье Правила именования в Visual Basic.
Переменные могут быть объявлены одним из следующих типов данных: Boolean, Byte, Integer, Long, Currency, Single, Double, Date, String (для строк переменной длины), String * length (для строк фиксированной длины), Object или Variant. Если тип данных не указан, по умолчанию присваивается тип Variant. Вы также можете создать определяемый пользователем тип с помощью оператора Type.
Вы можете объявить несколько переменных в одном операторе. Чтобы указать тип данных, необходимо задать тип данных для каждой переменной.
В приведенном ниже операторе intX и intY объявлены как Variant и только intZ объявлен как тип Integer.
Нет необходимости указывать тип данных переменной в операторе объявления. Если вы не укажите тип данных, переменной будет присвоен тип Variant.
Сокращение для объявления переменных x и y типом Integer в приведенном выше операторе
Оператор Public
Оператор Public используется для объявления общих переменных на уровне модуля.
Общие переменные могут использоваться в любой процедуре проекта. Если общая переменная объявлена в стандартном модуле или модуле класса, она может использоваться в любых проектах, содержащих ссылку на проект, в котором объявлена данная общая переменная.
Оператор Private
Оператор Private используется для объявления частных переменных на уровне модуля.
Частные переменные могут использоваться только процедурами одного модуля.
На уровне модуля оператор Dim является эквивалентным оператору Private. Вы можете использовать оператор Private, чтобы упростить чтение и интерпретацию кода.
Оператор Static
Если для объявления переменной в процедуре используется оператор Static вместо оператора Dim, объявленная переменная сохраняет свое значение между вызовами в этой процедуре.
Оператор Option Explicit
В Visual Basic можно неявно объявить переменную, просто используя оператор присвоения значения. Все неявно объявленные переменные относятся к типу Variant. Для переменных типа Variant требуется больший объем памяти, чем для большинства других переменных. Приложение будет работать эффективнее, если переменные будут явно объявленными и им будет присвоен определенный тип данных. Явное объявление переменных снижает вероятность возникновения ошибок, вызванных конфликтом имен или опечатками.
Если вы не хотите, чтобы в Visual Basic были неявные объявления, то оператор Option Explicit должен стоять в модуле перед всеми процедурами. Этот оператор требует явного объявления всех переменных модуля. Если модуль содержит оператор Option Explicit, то при обнаружении необъявленной ранее переменной или опечатки в ее имени Visual Basic выдаст ошибку времени компиляции.
В программной среде Visual Basic имеется возможность задавать параметр, который будет автоматически включать оператор Option Explicit во все новые модули. Справочная информация по изменению параметров среды Visual Basic предоставлена в документации приложения. Обратите внимание, что данный параметр не меняет уже написанный код.
Статические и динамические массивы нужно объявлять в явном виде.
Объявление объектной переменной для автоматизации
При использовании приложения для управления объектами другого приложения необходимо указать ссылку на библиотеку типов этого другого приложения. Когда ссылка указана, можно объявлять объектные переменные в соответствии с наиболее подходящими для них типами. Например, если вы указываете ссылку на библиотеку типов Microsoft Excel при работе в Microsoft Word, то можете объявить переменную типа Worksheet внутри Word, чтобы она представляла объект Worksheet приложения Excel.
При использовании другого приложения для управления объектами Microsoft Access, как правило, можно объявлять объектные переменные согласно наиболее подходящим для них типам. Вы можете также использовать ключевое слово New для автоматического создания нового экземпляра объекта. Однако может возникнуть необходимость указать, что объект принадлежит Microsoft Access. Например, при объявлении объектной переменной, представляющей форму Access внутри Visual Basic, необходимо сделать различимыми объект Form приложения Access и объект Form приложения Visual Basic. Для этого следует включать имя библиотеки типов в объявление переменной, как показано в примере ниже:
Некоторые приложения не распознают отдельные объектные типы Access. Даже если в этих приложениях указана ссылка на библиотеку типов Access, все объектные переменные Access необходимо объявлять с типом Object. Также невозможно использовать ключевое слово New для создания нового экземпляра объекта.
В примере ниже показано, как объявлять переменную, представляющую экземпляр объекта Application Access в приложении, которое не распознает объектные типы Access. Затем приложение создает экземпляр объекта Application.
В документации приложения предоставлена информация о поддерживаемом им синтаксисе.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Оператор Dim
Объявляет переменные и распределяет дисковое пространство.
Синтаксис
Dim [ WithEvents ] varname [ ( [ subscripts ] ] ] [ As [New ] type ] [ [ WithEvents ] varname [ subscripts] ] ] [ As [ New ] type ].
Синтаксис оператора Dim состоит из следующих частей:
Если явно не указано в нижней части, нижняя граница массива контролируется заявлением Option Base. Если оператор Option Base не задан, нижняя граница равна нулю.
Примечания
Переменные, объявляемые с помощью оператора Dim на уровне модуля, доступны всем процедурам внутри этого модуля. На уровне процедуры переменные доступны только внутри соответствующей процедуры.
Чтобы объявить тип данных переменной, используйте заявление Dim на уровне модуля или процедуры. Например, следующий оператор объявляет переменную с типом Integer.
Также используйте оператор Dim для объявления типа объекта переменной. В следующем примере объявляется переменная для нового экземпляра листа.
Если ключевое слово New не используется при объявлении переменной объекта, переменная, ссылающаяся на объект, должна быть назначена существующему объекту с помощью утверждения Set перед его использованием. Пока она не назначена объекту, объявленная объектная переменная имеет особое значение Nothing, указывающее на отсутствие ссылки на какой-либо конкретный экземпляр объекта.
Вы можете также использовать оператор Dim с пустыми скобками для объявления динамического массива. Объявив динамический массив, используйте заявление ReDim в процедуре, чтобы определить количество измерений и элементов в массиве. Если вы пытаетесь перенастроить измерение для переменной массива, размер которой был явно указан в частном, публичном или дим-заявлении, возникает ошибка.
Если вы не указываете тип данных или тип объекта, а в модуле нет Def_type_, переменная по умолчанию является Variant. При инициализации переменных числовой переменной присваивается значение 0, строке переменной длины — строка нулевой длины («»), а строка фиксированной длины заполняется нулями. Переменные типа Variant при инициализации получают значение Empty. Каждый элемент переменной определяемого пользователем типа инициализируется как отдельная переменная.
Когда оператор Dim используется в процедуре, обычно этот оператор Dim располагают в начале этой процедуры
Пример
В этом примере показывается, как используется оператор Dim для объявления переменных. В нем также показывается, как оператор Dim используется для объявления массивов. Нижний предел по умолчанию для подскрипников массива — 0 и может быть переопределен на уровне модуля с помощью утверждения Option Base.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Оператор Dim (Visual Basic)
Объявляет и выделяет дисковое пространство для одной или нескольких переменных.
Синтаксис
Компоненты
Необязательный элемент. См. список атрибутов.
Необязательный элемент. Может применяться один из перечисленных ниже типов.
Необязательный элемент. См. раздел Shared.
Необязательный элемент. См. раздел Shadows.
Необязательный элемент. См. раздел static.
Необязательный элемент. См. раздел ReadOnly.
Необязательный элемент. Указывает, что это переменные объекта, которые ссылаются на экземпляры класса, которые могут создавать события. См. раздел WithEvents.
Обязательный элемент. Список переменных, объявляемых в этой инструкции.
Каждый элемент variable имеет перечисленные ниже синтаксис и компоненты.
Комментарии
компилятор Visual Basic использует Dim инструкцию для определения типа данных переменной и других сведений, например кода, который может получить доступ к переменной. В следующем примере объявляется переменная для хранения Integer значения.
Можно указать любой тип данных или имя перечисления, структуры, класса или интерфейса.
Переменную можно объявить в процедуре, блоке, классе, структуре или модуле. Нельзя объявить переменную в исходном файле, пространстве имен или интерфейсе. Дополнительные сведения см. в разделе Контексты объявления и уровни доступа по умолчанию.
Если Option Explicit параметр имеет значение On (значение по умолчанию), компилятору требуется объявление для каждой используемой переменной. Дополнительные сведения см. в разделе оператор Option Explicit.
Указание начального значения
Определение типа применяется на уровне процедуры. Он не применяется за пределами процедуры в классе, структуре, модуле или интерфейсе. Дополнительные сведения о выводе типа см. в разделе Option Infer и определение локального типа.
Сведения о том, что происходит, если не указан тип данных или инициализатор, см. в подразделе типы данных и значения по умолчанию далее в этой статье.
Инициализатор объекта можно использовать для объявления экземпляров именованных и анонимных типов. Следующий код создает экземпляр Student класса и использует инициализатор объекта для инициализации свойств.
Объявление нескольких переменных
Можно объявить несколько переменных в одном операторе объявления, указав имя переменной для каждой из них, и после каждого имени массива с круглыми скобками. Переменные разделяются запятыми.
Если объявить более одной переменной с одним As предложением, вы не сможете предоставить инициализатор для этой группы переменных.
Можно указать различные типы данных для разных переменных, используя отдельное As предложение для каждой объявляемой переменной. Каждая переменная принимает тип данных, указанный в первом As предложении, обнаруженном после его variablename части.
Массивы
Можно объявить переменную для хранения массива, который может содержать несколько значений. Чтобы указать, что переменная содержит массив, сразу после нее следует использовать variablename круглые скобки. Дополнительные сведения см. в руководстве по работе с массивами.
Можно указать нижнюю и верхнюю границы каждого измерения массива. Для этого добавьте в boundslist круглые скобки. Для каждого измерения объект boundslist задает верхнюю границу и, при необходимости, нижнюю границу. Нижняя граница всегда равна нулю, независимо от того, указана она или нет. Каждый индекс может изменяться от нуля до значения его верхней границы.
Следующие две инструкции эквивалентны. Каждый оператор объявляет массив из 21 Integer элемента. При доступе к массиву индекс может изменяться от 0 до 20.
Массив может иметь размер от 1 до 32.
Все границы в объявлении массива можно оставить пустыми. В этом случае массив имеет указанное число измерений, но не инициализировано. Он имеет значение Nothing до тех пор, пока не будет инициализировано по крайней мере часть его элементов. В Dim инструкции должны быть указаны границы для всех измерений или для отсутствия измерений.
Если массив имеет более одного измерения, необходимо включить запятые между круглыми скобками, чтобы указать количество измерений.
Значения массива можно инициализировать с помощью литерала массива. Для этого заключите значения инициализации в фигурные скобки ( <> ).
Для многомерных массивов инициализация каждого отдельного измерения заключается в фигурные скобки во внешнем измерении. Элементы задаются в построчном порядке.
Дополнительные сведения о литералах массивов см. в разделе массивы.
Типы данных и значения по умолчанию
Если параметр Option Strict включен, возникает ошибка времени при компиляции.
Если параметр Option Infer отключен, а параметр Option Strict включен, возникает ошибка времени компиляции.
если указать тип данных, но не указать инициализатор, Visual Basic инициализирует переменную как значение по умолчанию для ее типа данных. В следующей таблице приведены значения инициализации по умолчанию.
Каждый элемент структуры инициализируется так, как если бы он был отдельной переменной. Если вы объявили длину массива, но не инициализируйте его элементы, каждый элемент инициализируется так, как если бы он был отдельной переменной.
Время существования статической локальной переменной
Объявление процедуры | Переменная инициализирована | Переменная останавливается |
---|---|---|
В модуле | При первом вызове процедуры | При остановке выполнения программы |
В классе или структуре процедура Shared | При первом вызове процедуры либо в определенном экземпляре, либо в самом классе или структуре. | При остановке выполнения программы |
В классе или структуре процедура не Shared | При первом вызове процедуры в определенном экземпляре | Когда экземпляр выпускается для сборки мусора (GC) |
Атрибуты и модификаторы
Атрибуты можно применять только к переменным члена, а не к локальным переменным. Атрибут вносит сведения в метаданные сборки, что не имеет смысла для временного хранения, например локальных переменных.
Код за пределами класса, структуры или модуля должен уточнять имя переменной-члена именем этого класса, структуры или модуля. Код за пределами процедуры или блока не может ссылаться на локальные переменные в этой процедуре или блоке.
Освобождение управляемых ресурсов
Если класс принадлежит особому ценному и ограниченному ресурсу (например, к подключению к базе данных или файлу), может возникнуть необходимость в ожидании следующей сборки мусора для очистки экземпляра класса, который больше не используется. Класс может реализовать интерфейс, IDisposable чтобы предоставить способ освобождения ресурсов перед сборкой мусора. Класс, реализующий этот интерфейс, предоставляет Dispose метод, который может быть вызван для немедленного освобождения ценных ресурсов.
Using Инструкция автоматизирует процесс получения ресурса, выполнения набора инструкций и последующего удаления ресурса. Однако ресурс должен реализовывать IDisposable интерфейс. Дополнительные сведения см. в разделе Оператор using.
Пример 1
В следующем примере переменные объявляются с помощью Dim инструкции с различными параметрами.
Пример 2
В следующем примере выводятся простые числа от 1 до 30. Область локальных переменных описывается в разделе Комментарии к коду.
Пример 3
В следующем примере speedValue переменная объявляется на уровне класса. Private Ключевое слово используется для объявления переменной. Доступ к переменной может осуществляться любой процедурой в Car классе.