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

Найдите на панели инструментов «Toolbox» элемент управления с подсказкой «TextBox», кликните по нему и, затем, кликните в любом месте рабочего поля формы. Элемент управления «TextBox» (текстовое поле) будет добавлен на форму.

Найдите на панели инструментов «Toolbox» элемент управления с подсказкой «CommandButton», кликните по нему и, затем, кликните в любом месте рабочего поля формы. Элемент управления «CommandButton» (кнопка) будет добавлен на форму.

Кликнув по элементу управления на форме, вы можете изменять его размер, перетягивая границы за белые квадратики, и перетаскивать по форме, ухватив за одну из границ. Кликнув по заголовку формы или по ее рабочему полю, вы можете также изменять ее размер, перетягивая границы за белые квадратики.
Нажатием клавиши «F4» вызывается окно свойств, с помощью которого можно вручную задавать значения свойств пользовательской формы и элементов управления. В окне свойств отображаются свойства выбранного элемента управления или формы, если выбрана она. Также окно свойств можно вызвать, нажав кнопку «Properties Window» во вкладке «View».

Отображение формы на экране

Чтобы запустить пользовательскую форму для просмотра из редактора VBA, необходимо выбрать ее, кликнув по заголовку или свободному от элементов управления полю, и совершить одно из трех действий:

- нажать клавишу «F5»;
- нажать на треугольник на панели инструментов (на изображении выше треугольник находится под вкладкой «Debug»);
- нажать кнопку «Run Sub/UserForm» во вкладке «Run».

Для запуска пользовательской формы с рабочего листа Excel, можно использовать кнопки, описанные в этой статье. Например, чтобы отобразить форму с помощью «кнопки – элемента ActiveX», используйте в модуле рабочего листа следующий код:

Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
В результате вышеперечисленных действий мы получаем на рабочем листе Excel пользовательскую форму с мигающим курсором в текстовом поле:
Добавление программного кода

Программный код для пользовательской формы и элементов управления формы записывается в модуль формы. Перейти в модуль формы можно через контекстное меню, кликнув правой кнопкой мыши на поле формы или на ссылке «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