VBA Excel
242 subscribers
88 photos
24 links
VBA Excel для начинающих. Справка по VBA Excel. Visual Basic for Applications. Справочник. Самоучитель.
Download Telegram
Имена переменных и процедур

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

1️⃣ Имя может состоять из букв, цифр и знака подчеркивания (_). Пробел, точка и другие специальные символы не допускаются, кроме шести символов-суффиксов для переменных.
2️⃣ Первым знаком имени должна быть буква. Длина имени ограничена 255 знаками.
3️⃣ Имена процедур принято начинать с заглавной буквы, переменных — со строчной.
4️⃣ Не следует использовать имена, совпадающие с именами встроенных функций, операторов, методов, свойств и констант VBA Excel.
5️⃣ Нельзя допускать повторения имен внутри одной области видимости (действия) переменных, например, внутри одной процедуры.

VBA Excel не чувствителен к регистру, но сохраняет заглавные буквы в именах. Если язык приложения русский, то для наименования переменных, констант, процедур и аргументов можно использовать слова на кириллице.

Примеры имен:

Переменные: x, y, z, a1, a2, a3, summa, myRange, my_Currency;

Подпрограммы: Primer1(), Raschet_Stazha(), SozdaniyeTablitsy();

Функции с аргументом: СуммаПрописью(x As Double) As String, ПоследнийДеньМесяца(x As Date) As Date.

#VBA #ExcelVBA #Переменная #Переменные #Variable #Variables
Channel photo updated
Области видимости переменных

Переменная в VBA Excel может быть локальной, модульной или глобальной.
Суффиксы в именах переменных

Переменные в VBA Excel могут быть объявлены с одним из следующих типов данных: Byte, Boolean, Integer, Long, Single, Double, Currency, Date, String (для строк переменной или фиксированной длины), Object или Variant. Если при объявлении переменной тип данных не указан, по умолчанию присваивается тип Variant.

Шесть типов данных имеют соответствующие им символы, которые можно использовать при объявлении переменных, добавляя их в конце имени как суффиксы. Переменная будет объявлена с соответствующим символу типом данных.

Символы, назначенные типам данных:

% – Integer;
& – Long;
! – Single;
# – Double;
@ – Currency;
$ – String.
👍1
Примеры объявления переменных

Пример 1
Объявление переменных с указанием типа данных с помощью оператора Dim и суффиксов:

'Объявление переменных без суффикса
Dim myInteger as Integer, mySingle as Single, myCurrency as Currency
'Объявление переменных с суффиксом
Dim myInteger%, mySingle!, myCurrency@


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

Пример 2
Объявление переменных без оператора Dim (Static, Public).

Если в модуле не используются операторы Option Explicit и Dim (Static, Public), то суффиксы являются единственным способом назначить переменной тип данных. То, что суффиксы работают и в этом случае, проверим на следующей процедуре:

Sub Primer()
a$ = "привет"
a = StrConv(a, 1)
End Sub


Указываем с помощью суффикса $, что переменная a является строковой, и ставим паузу на операторе End Sub. Запускаем процедуру:
👍1
На изображении видно, что переменной a присвоен тип данных String (окно Locals). Теперь запускаем ту же процедуру, но с переменной без суффикса:
Как и ожидалось, переменной a присвоен тип данных по умолчанию – Variant. Через косую черту указан тип данных, который VBA Excel идентифицировал у содержимого переменной a.

Пример 3
Объявление глобальной переменной и обращение к ней из других модулей.

Вариант 1
Объявление глобальной переменной myGlobalModule в стандартном модуле Module1:

Public myGlobalModule As Variant


Обращение к переменной myGlobalModule из модуля листа и книги:

Module1.myGlobalModule


Вариант 2
Объявление глобальной переменной myGlobalSheet в модуле листа Лист1:

Public myGlobalSheet As Variant


Обращение к переменной myGlobalSheet из стандартного модуля и модуля книги:

Лист1.myGlobalSheet


Вариант 3
Объявление глобальной переменной myGlobalBook в модуле книги ЭтаКнига:

Public myGlobalBook As Variant


Обращение к переменной myGlobalBook из стандартного модуля и модуля листа:

ThisWorkbook.myGlobalBook
Присваивание и возвращение

Присваивание

В VBA это процесс, когда переменной присваивается значение с помощью оператора "=". Например:

Dim x As Integer
x = 5


Здесь переменной x (типа Integer) присваивается значение 5. Теперь, когда вы используете x в коде, она будет представлять (возвращать) это значение.

Пример в контексте Excel:

Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Лист1")


Здесь переменной ws присваивается ссылка на лист с именем "Лист1" в текущей книге.

Возвращение

Обычно пишут, что, при обращении к переменной, она возвращает свое значение, но больше эта формулировка подходит к функциям, выражениям (формулам) и свойствам объектов.

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

Пример:

Function AddNumbers(a As Integer, b As Integer) As Integer
AddNumbers = a + b ' Возвращаем сумму a и b
End Function


Использование функции:

Sub Example()
Dim result As Integer
result = AddNumbers(3, 7) ' Функция возвращает 10, это значение присваивается переменной result
MsgBox result ' Показываем результат в окне сообщения
End Sub


В этом примере:

1. Функция AddNumbers вычисляет сумму и возвращает её.
2. Возвращённое значение присваивается переменной result.
3. Затем это значение используется для вывода в информационное окно MsgBox.
1👍1
Оператор Option Explicit

Оператор Option Explicit используется в VBA Excel на уровне модуля для принудительного объявления всех переменных в этом модуле. Он должен быть указан в модуле перед процедурами.

Если оператор Option Explicit отображается в модуле, необходимо явно объявить все переменные с помощью инструкций Dim, Private, Public, ReDim или Static, что позволяет избежать ошибок из-за опечаток или некорректного использования переменных. При попытке использования необъявленной переменной возникает ошибка во время компиляции.

Чтобы настроить автоматическое добавление оператора Option Explicit в начале каждого нового модуля в VBA Excel, выполните следующие шаги:

1️⃣ Откройте редактор VBA
2️⃣ В редакторе VBA выберите Tools (Сервис) → Options (Параметры).
3️⃣ Перейдите на вкладку Editor (Редактор).
4️⃣ Установите флажок Require Variable Declaration (Требовать объявление переменных).
5️⃣ Нажмите 🆗.

Теперь каждый раз, когда вы добавляете новый модуль, в его начале автоматически будет вставляться строка Option Explicit:

#OptionExplicit
Оператор Option Base

Оператор Option Base позволяет установить начальный индекс по умолчанию для всех массивов, объявленных в модуле. Вы можете выбрать:

Option Base 0 — массивы начинаются с 0 (установлено по умолчанию).
Option Base 1 — массивы начинаются с 1.

Если вы не используете Option Base, массивы по умолчанию начинают нумерацию с 0, поэтому нет смысла использовать Option Base 0.

Option Base 1 устанавливает нумерацию массивов с 1 по умолчанию. Этот оператор должен быть написан в самом начале модуля, перед всеми процедурами.

Если вы явно задаёте диапазон индексов при объявлении массива (Dim myArray(1 To 5)), Option Base не влияет на объявленную размерность.

Пример с Option Base 1

В этом примере оператор Option Base используется для переопределения значения базового индекса массива, равного 0. Функция LBound возвращает наименьший доступный индекс для указанного измерения массива. Оператор Option Base используется только на уровне модуля.

Option Base 1 'Устанавливает нижний индекс массива по умолчанию равным 1.
 
Sub Primer()
Dim MyArray(20), TwoDArray(3, 4) 'Объявление переменных массива.
Dim ZeroArray(0 To 5) 'Переопределение базового индекса массива.
Dim NewArray(4 To 5) 'Переопределение базового индекса массива.
 
'Используем функцию LBound для проверки нижней границы массивов.
MsgBox LBound(MyArray) 'Возвращает 1.
MsgBox LBound(TwoDArray, 2) 'Возвращает 1 (для второго измерения массива).
MsgBox LBound(ZeroArray) 'Возвращает 0.
MsgBox LBound(NewArray) 'Возвращает 4.
End Sub


#VBA #ExcelVBA #OptionBase
👍1
Модуль в VBA Excel

Модуль в VBA Excel — это место, где хранится ваш код. Он помогает структурировать макросы и функции, упрощая управление вашим проектом.

Есть три основных типа модулей:

1️⃣ Стандартные (обычные) модули – для хранения общих макросов и функций.
2️⃣ Модули объектов – модули книг, листов, диаграмм и пользовательских форм.
3️⃣ Модули пользовательских классов – используются для создания собственных объектов и более сложных структур (это для продвинутых программистов, нам же вряд ли пригодятся).

Повторю, как создать стандартный модуль:

1️⃣ Откройте редактор VBA (Alt + F11).
2️⃣ В меню выберите Insert → Module.
3️⃣ Новый модуль появится в разделе Modules в окне Project Explorer.

Открыть существующий стандартный модуль можно, дважды кликнув по его имени в проводнике, или открыв на нем правой кнопкой мыши контекстное меню и выбрав «View Code».

Модули объектов создавать не надо, они уже есть. Чтобы открыть модуль объекта, дважды кликните в проводнике на его имени, или откройте на нем правой кнопкой мыши контекстное меню и выберите «View Code».

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

Между открытыми окнами форм и модулей можно переходить, нажав в главном меню вкладку «Window», где перечислены все открытые модули и формы (активный объект отмечен галочкой).

#Модуль #Module #СтандартныйМодуль #МодульКниги #МодульЛиста #МодульФормы #МодульДиаграммы
Процедуры в VBA Excel

Процедура — это блок кода, который выполняет определенную задачу. В VBA Excel процедуры делятся на два типа:

1️⃣ Sub (процедура без возврата результата): выполняет действия, но не возвращает значения.
2️⃣ Function (функция): возвращает результат, который можно использовать в расчетах или других действиях. Может быть вызвана в ячейке Excel, как встроенная функция.

Есть ещё и третий тип процедуры - Property (пользовательские свойства) - но он вряд ли вам пригодится.

Вот пример простой процедуры Sub:

Sub ShowMessage()
MsgBox "Добро пожаловать в VBA Excel!"
End Sub


▶️ Чтобы запустить, откройте редактор VBA (Alt + F11), вставьте код в модуль и нажмите F5.

#Sub #SubVBA #Function #FunctionVBA #Процедура #Подпрограмма #Функцияа
Формы в VBA Excel

Формы в VBA Excel (UserForms) — это инструмент для создания удобного интерфейса пользователя. UserForm — это графическая форма, которая позволяет взаимодействовать с пользователем через элементы управления (текстовые поля, кнопки, списки и т.д.).

Как создать форму?

1️⃣ Откройте редактор VBA (Alt + F11).
2️⃣ В меню выберите: Insert → UserForm.
3️⃣ Перед вами откроется конструктор форм.

На панели инструментов (Toolbox) вы найдете стандартные элементы:

Label — надпись;
TextBox — поле ввода;
CommandButton — кнопка;
ComboBox и ListBox — выпадающие списки и т.д.

Просто перетащите нужный элемент на форму и настройте его свойства (щелчок правой кнопкой → Properties).

При создании UserForm окно Toolbox обычно открывается автоматически. Если этого не произошло, в главном меню выберите: View → Toolbox.

Вот пример простой формы для ввода имени:

1️⃣ Добавьте TextBox и CommandButton на форму.
2️⃣ В модуле формы напишите:

Private Sub CommandButton1_Click()
MsgBox "Привет, " & TextBox1.Text & "!"
Unload Me
End Sub


3️⃣ Для отображения формы создайте процедуру в модуле:

Sub ShowForm()
UserForm1.Show
End Sub


▶️ Запустите макрос ShowForm — и форма откроется!

Напишите своё имя в TextBox1 и нажмите кнопку CommandButton1.

#UserForm #Форма #ПользовательскаяФорма #UserFormVBA #ФормаVBA
Личная книга макросов

Личная книга макросов — это специальный скрытый файл Excel (PERSONAL.XLSB), в котором хранятся ваши макросы. Этот файл автоматически загружается при открытии Excel и позволяет использовать макросы во всех рабочих книгах на вашем компьютере.

Если вы не видите в вашем редакторе VBA Личную книгу макросов, создайте её:

1️⃣ Откройте любой файл Excel.
2️⃣ Перейдите на вкладку "Разработчик" → нажмите "Запись макроса".
3️⃣ В окне записи макроса выберите "Сохранить в: Личная книга макросов".
4️⃣ Нажмите кнопку 🆗 для начала записи макроса.
5️⃣ Запишите любой простой макрос, например, выделите несколько ячеек и остановите запись.
6️⃣ Закройте Excel и подтвердите сохранение Личной книги макросов.

Теперь файл PERSONAL.XLSB создан и будет автоматически открываться при запуске Excel.

#VBA #ExcelVBA #КнигаМакросов #PERSONALXLSB #MacroWorkbook
Редактор VBA без Личной книги макросов
Редактор VBA с Личной книгой макросов
Условные операторы VBA Excel

Условные операторы в VBA — это конструкции, которые проверяют условия и управляют выполнением кода в зависимости от результата (истина или ложь).

Основные операторы:
1️⃣ Оператор If...Then...Else
2️⃣ Оператор Select Case
3️⃣ Функция IIf

#VBA #ExcelVBA #УсловныеОператоры