Как сделать переменные в vba

Обновлено: 08.07.2024

Основное назначение VBA это обработка данных. Некоторые данные могут храниться в объектах, например, диапазонах рабочих листов, а некоторые сохраняются в переменных.

Что такое переменные?

Переменная это некоторое выделенное пространство в памяти компьютера, которое может содержать данные разных типов – числовые, текстовые, логические и т.д. (о типах данных в VBA рассказано в этой статье), а так же результаты вычислений. Значение переменной присваивается с помощью знака равенства. Для удобства работы с переменными в языках программирования предусмотрена возможность задания человеко-понятных имен, к примеру, имена переменных rFIO, rBirthday. К именам переменных в VBA имеется ряд требований:

Пара советов по именованию переменных. Давайте имена переменным понятные, но в тоже время короткие т.к. с длинными именами сложнее работать. VBA позволяет описывать переменные в любой области кода, что в дальнейшем, при большом кол-ве строк программного кода может вызвать затруднение с поиском и определением типа. Из своего опыта советую не лениться описывать все переменные в начале процедуры или функции, определив, таким образом, некоторый блок переменных. Можно также оставить комментарии с подробным описанием назначения переменной.

Описание переменных в VBA

Под описанием переменной подразумевается указание типа данных. В VBA переменные можно указывать явным и неявным образом. Не явным образом означает, что Вы можете в любом месте кода указать имя переменной и начать с ней работать, в таком случае тип этой переменной принимается как Variant. Такой способ удобен, но не рекомендуется т.к. может возникнуть путаница и как следствие, ошибки при вычислениях. Явное описание осуществляется после ключевого слова Dim [имя переменной] As [Тип], например: Dim MyInt As Integer. В случае такого описания переменная MyInt будет хранить в памяти только значения целого типа.

Обязательное объявление всех переменных

Как уже говорилось выше переменные в VBA можно объявить, а можно и не объявлять. Со своей стороны я рекомендую объявлять каждую переменную, используемую в программе. Это позволить сделать код более понятным, дисциплинирует, и в крупных разработках позволит сэкономить память и увеличить быстродействие при обработке данных. Для того чтоб в VBA включить обязательное объявление всех переменных необходимо в начале модуля добавить строку: Option Explicit. После, на каждой не объявленной переменной будет происходить остановка программы, и отображаться ошибка до тех пор, пока всем переменным не будет присвоен тип в разделе Dim.

Примечание: Для того чтоб в VBE (Visual Basic Editor) оператор Option Explicit вставлялся автоматически в каждый новый модуль, необходимо в настройках редактора VBE активировать данную опцию: Tools-Options. , на вкладке Editor поставить галочку "Require Variable Declaration"


Константы в VBA

Константой называется значение, хранимое в памяти, которое в процессе работы программы не изменяется. Константы используются в тех случаях, когда в коде программы используется один и тот же параметр, число, строка и т.д. Для того чтоб обеспечить удобство изменения этих параметров при необходимости, в начале кода программы описываются константы и присваивается значение. Константы объявляются с помощью оператора Const. Например:

Const MyIntConst as Integer = 8
Const MyTxtConst as String = "Константа"

или без указания типа:
Const MyConst = 4,55
в этом случае константа типа Variant.

Внимание. В случае если при работе программы Вы захотите изменить значение константы, программа завершится ошибкой. Поэтому будьте внимательны. Так же, не допускается совпадение имен констант и переменных. Требования к именам констант такие же, как и к переменным.

Закрепим все вышесказанное примером небольшого макроса, который рассчитает функцию y = x+i*2, где x=i/7, 0 Работа с циклами While и Until в VBA

С помощью переменных мы можем записывать все типы информации, такие как: числа, текст, дата и т.д.

Рассмотрим первый пример:

  • - Dim: определение переменной
  • - my_variable : имя переменной
  • - As: определение типа переменной
  • - Integer: тип переменной

В общем, декларирование переменных не является обязательным и код будет работать, однако это настоятельно рекомендуется. Это облегчает работу с ними, их поиск, позволяет решать разного рода проблемы. В принципе, декларирование переменных является хорошей привычкой при программировании.

Тип переменной указывает на природу ее содержания (текст, число, дата и т.д.).

Вторая строка присваивает значение переменной:

Результат выполнения кода будет следующий:


Tипы переменных

Рассмотрим несколько примеров с различными типами переменных:

Символы, указанные в таблице, могут использоваться для более краткого декларирования переменных:

Эти две записи являются идентичными.

Как вы уже знаете, в VBA переменные можно использовать без предварительного объявления и указания типа. Но такой подход допустим лишь при разработке небольших программ, состоящих буквально из пары десятков строк. Когда программа увеличивается, контролировать работу с переменными , которые спонтанно появляются в коде, становится сложно.

Необъявленные переменные могут вызывать трудно диагностируемые ошибки. Например, рассмотрим такой код (листинг 5.2.):

Если бы редактор кода не давал нам пользоваться необъявленными переменными — подобного рода ошибки были бы пресечены на корню. Чтобы заставить редактор автоматически требовать объявление переменных , можно поступить одним из двух способов. Первый — вставить в раздел объявлений модуля (то есть — вне кода процедур и обработчиков событий) команду Option Explicit . Второй — включить запрещение работы с необъявленными переменными в настройках редактора. Для этого выполните команду главного меню Tools • Options (Инструменты • Опции) и в появившемся диалоговом окне на вкладке Editor (Редактор) включите параметр Require Variable Declaration (Требовать объявление переменных ).

5.5. Объявляем переменные: Dim и Static

Лучше всего объявлять переменные перед использованием. Так вы избежите ненужных ошибок, и, при работе с объектными переменными , сможете получать подсказки при их использовании.

Рассмотрим пример. Объявление переменной с именем num_MyAge типа Byte выглядит так (листинг 5.3.):

Этот код можно перевести так: "Объявить переменную типа Byte с именем num_MyAge и сделать ее доступной в модуле, в котором она объявлена". Второй строкой мы присваиваем переменной число 23.

Доступность переменной , или, как говорят, область видимости , задается ключевым словом Dim . Оно означает, что мы сможем пользоваться объявленной переменной только внутри того модуля, в котором она объявлена.

Помимо ключевого слова Dim могут использоваться и другие слова. В частности, нам будет полезна команда Static — переменная , объявленная с использованием этой команды, будет хранить свое значение между вызовами процедуры, область ее видимости аналогична переменной , объявленной с Dim . Такую переменную можно использовать для накопления каких-либо значений.

Рассмотрим пример. Создайте новый документ Microsoft Word , добавьте в него две кнопки. В обработчике события Click одной из них с именем cmd_Dim , на которой будет написано Dim , напишите такой код (листинг 5.5.)

Вторую кнопку назовите cmd_Static , подпишите ее как Static , и в обработчик нажатия добавьте следующее (листинг 5.6.):

5.6. Арифметические операторы и работа с числовыми переменными

Операторы — это команды, которые используются в VBA для работы с данными. Если вы программировали когда-нибудь, например, на Basic'e или на каком-нибудь другом языке, вам уже знакомы основные операторы . Ну а если вы раньше не сталкивались с операторами в программировании, то уж со школьным курсом математики вы сталкивались точно. Большинство операторов VBA действуют точно так же, как знакомые всем арифметические операторы . В табл. 5.3. вы можете видеть описание арифметических операторов , применимых в VBA

Если снова вернуться к математике, нельзя не заметить, что редкая математическая запись обходится без знака = . Этот знак используется в VBA в нескольких ролях.

Во-первых, это оператор присваивания . Вы уже сталкивались с ним, когда присваивали какие-то значения свойствам элементов управления или переменным . Например, такая запись : num_a = 10 + 2 означает: "Присвоить переменной num_a результат сложения чисел 10 и 2 " или, проще, "а равно 10+2". Вторая роль оператора = заключается в том, что он используется в командах сравнения выражений — о них мы поговорим в следующей главе.

5.7. Конкатенация

Несколько ролей и у оператора + . Во-первых — это арифметический оператор сложения. А во-вторых — оператор конкатенации строк. Конкатенация — это нечто вроде "склеивания" строк. В качестве оператора конкатенации можно использовать и оператор & . Считается, что & использовать предпочтительнее так как он в любом случае обрабатывает операнды как строковые данные.

Давайте рассмотрим пример, который охватывает арифметические операции и конкатенацию строк.

Добавим кнопку в документ Microsoft Word , назовем ее cmd_Experiments , надпишем ее как Работа с операторами .

Теперь решим, какие переменные нам нужны.

Для имени пользователя это переменная типа String . Дадим ей имя str_UserName . Для чисел нам понадобится пара переменных одного из числовых типов.

Какие числа введет пользователь ? Этого мы не знаем. Конечно, можно ограничить ввод проверками, но это дела будущих примеров. Предполагается, что пользователь может ввести практически любое число — целое или дробное, положительное или отрицательное. Поэтому воспользуемся типом Double . Назовем пару числовых переменных num_First и num_Second .

Создадим отдельную переменную того же типа Double для хранения суммы введенных значений – назовем ее num_Summ .

В условии нашей задачи присутствует требование вывести все введенные данные в строку, скомбинировав с определенными словами. Нам понадобится переменная типа String для хранения этой строки. Назовем ее str_Result .

Также добавим в обработчик нажатия кнопки команду Option Explicit — тогда система запретит использование необъявленных переменных .

Вы уже знакомы с функцией InputBox , которая выводит окно для ввода данных пользователем. Как вы могли убедиться, InputBox отлично справляется со вводом строковых значений. А как насчет чисел? Можем ли мы написать что-то вроде:

Пожалуй, сейчас для вас самое сложное — это построить строку вывода, однако пользуйтесь следующими правилами и вы всегда будете правильно и быстро строить подобные строки.

Во-первых — помните, что все, что вы хотите вывести в виде неизменного текста, должно быть включено в кавычки, а имена переменных , наоборот, пишутся без кавычек. Во-вторых — используйте оператор & при "склеивании" отдельных частей строки или оператор + и функцию Str (о ней вы прочтете ниже), которая конвертирует числовые переменные в строки. Так вы будете гарантированы от неожиданностей и ошибок.

Например, пусть в переменной str_UserName хранится имя пользователя "Александр", а переменная str_Result должна содержать результат вывода. Напишем код, помещающий в str_Result строку "Привет, Александр":

Видите? Ничего сложного, правда?

Обратите внимание на то, как реагирует система на использование необъявленных переменных при добавленной в модуль команде Option Explicit (рис. 5.3.).

Однако вернемся к нашей задаче. Мы определились с особенностями работы наиболее сложных ее частей, в итоге у нас получилось следующее (листинг 5.7.):

Обратите внимание на то, что строку сборки строки вывода str_Result мы разбили на несколько частей оператором переноса строки.

Переменные используются практически во всех компьютерных программах, и VBA ничем не отличается. Рекомендуется объявлять переменную в начале процедуры. В этом нет необходимости, но это помогает определить характер контента (текст, данные, цифры и т. Д.).

В этом уроке вы узнаете

Переменные VBA

Переменные — это конкретные значения, которые хранятся в памяти компьютера или в системе хранения. Позже вы можете использовать это значение в коде и выполнить. Компьютер получит это значение из системы и покажет в выходных данных. Каждой переменной должно быть присвоено имя.

Чтобы назвать переменную в VBA, вам необходимо следовать следующим правилам.

  • Должно быть не более 255 символов
  • Интервалы не допускаются
  • Не должно начинаться с цифры
  • Период не разрешен

Вот несколько примеров допустимых и недействительных имен для переменных в VBA.

Типы данных VBA, переменные и константы

Неверные имена

1_NewCar (не начинается с номера)

ID сотрудника (пробел не разрешен)

В VBA нам нужно объявить переменные перед их использованием, назначив имена и тип данных.

В VBA переменные объявляются либо неявно, либо явно.

  • Неявно : Ниже приведен пример переменной, объявленной неявно.
    • маркировать = guru99
    • объем = 4
    • Dim Num As Integer
    • Dim пароль As String

    Синтаксис для переменной VBA,

    Чтобы объявить переменную в VBA, введите Dim и имя:

    Прежде чем мы запустим переменные, мы должны записать макрос в Excel. Для записи макроса выполните следующие действия:

    Шаг 1) : запись макроса 1

    Шаг 2) : остановка макроса 1

    Шаг 4): выполнить код для макроса 1

    Пример для переменной VBA

    Когда вы запустите этот код, вы получите следующий вывод на вашем листе.

    Типы данных VBA, переменные и константы

    Типы данных Excel VBA

    Компьютер не может различить числа (1,2,3 ..) и строки (a, b, c, ..). Чтобы сделать это различие, мы используем типы данных.

    Типы данных VBA могут быть разделены на два типа

    • Числовые типы данных
    • Нечисловые типы данных

    В VBA, если тип данных не указан, он автоматически объявляет переменную как вариант.

    Давайте рассмотрим пример того, как объявлять переменные в VBA. В этом примере мы объявим переменные строки трех типов, дату соединения и валюту.

    Шаг 1) Как и в предыдущем уроке, мы вставим commandButton1 в нашу таблицу Excel.

    Типы данных VBA, переменные и константы

    Типы данных VBA, переменные и константы

    Шаг 3) На этом этапе

    Типы данных VBA, переменные и константы

    Шаг 4) Отключите режим дизайна, прежде чем нажать на кнопку команды

    Типы данных VBA, переменные и константы

    Шаг 5) После выключения режима дизайна, вы нажмете на кнопку Command1. Он покажет следующую переменную в качестве вывода для диапазона, который мы объявили в коде.

    • имя
    • Дата вступления
    • Доход в валюте

    Типы данных VBA, переменные и константы

    Константа в VBA

    Константа похожа на переменную, но вы не можете ее изменить. Чтобы объявить константу в VBA, вы используете ключевое слово Const .

    Есть два типа констант,

    • Встроенный или встроенный в приложение.
    • Символическое или пользовательское

    Вы можете указать область по умолчанию как частную или общедоступную . Например,

    Читайте также: