Как сделать переменные в vba
Добавил пользователь Евгений Кузнецов Обновлено: 10.09.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.
Неверные имена
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
Когда вы запустите этот код, вы получите следующий вывод на вашем листе.
Типы данных Excel VBA
Компьютер не может различить числа (1,2,3 ..) и строки (a, b, c, ..). Чтобы сделать это различие, мы используем типы данных.
Типы данных VBA могут быть разделены на два типа
- Числовые типы данных
- Нечисловые типы данных
В VBA, если тип данных не указан, он автоматически объявляет переменную как вариант.
Давайте рассмотрим пример того, как объявлять переменные в VBA. В этом примере мы объявим переменные строки трех типов, дату соединения и валюту.
Шаг 1) Как и в предыдущем уроке, мы вставим commandButton1 в нашу таблицу Excel.
Шаг 3) На этом этапе
Шаг 4) Отключите режим дизайна, прежде чем нажать на кнопку команды
Шаг 5) После выключения режима дизайна, вы нажмете на кнопку Command1. Он покажет следующую переменную в качестве вывода для диапазона, который мы объявили в коде.
- имя
- Дата вступления
- Доход в валюте
Константа в VBA
Константа похожа на переменную, но вы не можете ее изменить. Чтобы объявить константу в VBA, вы используете ключевое слово Const .
Есть два типа констант,
- Встроенный или встроенный в приложение.
- Символическое или пользовательское
Вы можете указать область по умолчанию как частную или общедоступную . Например,
Читайте также: