Теория урока
UserForm — собственное окно ввода. В редакторе VBA: Insert → UserForm, затем элементы с панели Toolbox:
Label (подпись), TextBox (поле), ComboBox (раскрывающийся список), ListBox,
CheckBox, CommandButton (кнопка). Имена элементов задаются в окне свойств (Name): удобно
txtСумма, cmbГород, btnOK.
- показать форму:
frmЗаявка.Show(по умолчанию модально: пока форма открыта, лист недоступен); UserForm_Initialize— событие перед показом, здесь заполняют списки через.AddItem;btnOK_Click— нажатие кнопки;Unload Me— закрыть форму и выгрузить из памяти;Me.Hide— только спрятать, значения полей сохранятся.
Private Sub UserForm_Initialize()
cmbГород.AddItem "Алматы"
cmbГород.AddItem "Астана"
cmbГород.AddItem "Шымкент"
End Sub
Private Sub btnOK_Click()
Dim r As Long
If cmbГород.Value = "" Then MsgBox "Выберите город": Exit Sub
If Not IsNumeric(txtСумма.Value) Then MsgBox "Сумма должна быть числом": Exit Sub
With Worksheets("Заявки")
r = .Cells(.Rows.Count, 1).End(xlUp).Row + 1 ' первая пустая строка
.Cells(r, 1).Value = Date
.Cells(r, 2).Value = cmbГород.Value
.Cells(r, 3).Value = CDbl(txtСумма.Value)
End With
Unload Me
End SubВсё, что ввели в TextBox, — текст. Перед расчётами проверьте IsNumeric и преобразуйте (CDbl, CLng),
иначе в таблицу попадёт текст «1500», который не суммируется. Блок With … End With позволяет не повторять Worksheets("Заявки"):
всё, что начинается с точки, относится к этому листу.
Формы есть только в настольном Excel. В Excel для Интернета и в Office Scripts их нет: там ввод делают через таблицы, Microsoft Forms или Power Apps.
Тренажёр не выполняет макросы и скрипты. Код из урока запускайте в настольном Excel (VBA) или в Excel для Интернета (Office Scripts). Здесь вы учитесь читать код и проверяете себя формулами и тестом.
Проверьте себя
Enter — ввести · F2 — изменить · F4 — $ в ссылке · Ctrl+C/Ctrl+V — копировать · Ctrl+Z — отменить
Esc или F6 — выйти из таблицы к кнопке «Проверить» · Shift+Tab в первой ячейке — к началу страницы