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

Программный код для пользовательской формы и элементов управления формы записывается в модуль формы. Перейти в модуль формы можно через контекстное меню, кликнув правой кнопкой мыши на поле формы или на ссылке «UserForm1» в проводнике слева и нажав кнопку «View Code».

Переходить между открытыми окнами в редакторе VBA можно через вкладку «Window» главного меню.

Изменить название пользовательской формы и элементов управления, их размеры и другие свойства можно через окно свойств (Properties Window), которое можно отобразить клавишей «F4». Мы же это сделаем с помощью кода VBA Excel, записанного в модуль формы.

Откройте модуль формы, кликнув правой кнопкой мыши по форме и нажав кнопку «View Code» контекстного меню. Скопируйте следующий код VBA, который будет задавать значения свойств формы и элементов управления перед ее отображением на экране:

Private Sub UserForm_Initialize()
'Me - это обращение к форме в ее модуле
With Me
'Присваиваем форме заголовок
.Caption = "Новая форма"
'Задаем ширину формы
.Width = 300
'Задаем высоту формы
.Height = 150
End With
With TextBox1
'Задаем ширину текстового поля
.Width = 200
'Задаем высоту текстового поля
.Height = 20
'Задаем расстояние от внутреннего края
'формы сверху до текстового поля
.Top = 30
'Задаем расстояние от внутреннего края
'формы слева до текстового поля, чтобы
'текстовое поле оказалось по центру
.Left = Me.Width / 2 - .Width / 2 - 6
'Задаем размер шрифта
.Font.Size = 12
'Присваиваем текст по умолчанию
.Text = "Напишите что-нибудь своё!"
End With
With CommandButton1
'Задаем ширину кнопки
.Width = 70
'Задаем высоту кнопки
.Height = 25
'Задаем расстояние от внутреннего края
'формы сверху до кнопки
.Top = 70
'Задаем расстояние от внутреннего края
'формы слева до кнопки, чтобы
'кнопка оказалось по центру
.Left = Me.Width / 2 - .Width / 2 - 6
'Задаем размер шрифта
.Font.Size = 12
'Присваиваем кнопке название
.Caption = "OK"
End With
End Sub


Вставьте скопированный код в модуль формы:
Познакомьтесь еще с одним способом отображения на экране пользовательской формы в процессе тестирования: установите курсор внутри процедуры UserForm_Initialize() и нажмите клавишу «F5» или треугольник на панели инструментов. Все предыдущие способы (с выбором формы в редакторе и кнопками на рабочем листе) тоже работают.

В результате мы получаем следующую форму:
Теперь перейдите в редактор VBA, откройте проект формы «UserForm1» и дважды кликните по кнопке «CommandButton1». В результате откроется модуль формы и будет создан шаблон процедуры CommandButton1_Click(), которая будет запускаться при нажатии кнопки:

Private Sub CommandButton1_Click()

End Sub


Вставьте внутрь шаблона процедуры CommandButton1_Click() следующую строку кода, которая будет копировать текст из текстового поля в ячейку «A1» активного рабочего листа:

Range("A1") = TextBox1.Text
Отобразите пользовательскую форму на экране и проверьте работоспособность кнопки 🆗.
Имена переменных и процедур

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

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