Перед отправкой пользовательской формы в Excel VBA можно сделать проверку заполнения всех полей:
1. Проверка при нажатии кнопки отправки
Private Sub CommandButton1_Click() ' Замените CommandButton1 на имя вашей кнопки
' Проверяем каждое поле
If TextBox1.Value = "" Then
MsgBox "Заполните поле Текстовое поле 1", vbExclamation
TextBox1.SetFocus
Exit Sub
End If
If ComboBox1.Value = "" Then
MsgBox "Выберите значение из списка", vbExclamation
ComboBox1.SetFocus
Exit Sub
End If
' Добавьте проверки для других полей
' Если все проверки пройдены - выполняем основную логику
Call ОсновнаяПроцедура
End Sub
Недостаток этого простого решения — ручной ввод If — End If для каждого поля UserForm. Для формы с десятками полей делать это скучновато. Плюс в том, что такой подход позволяет сделать подсказку пользователю индивидуальной для каждого поля.
2. Универсальная функция проверки
Private Sub CommandButton1_Click()
If Not ВсеПоляЗаполнены Then Exit Sub
' Основная логика при успешной проверке
Call ОсновнаяПроцедура
End Sub
Private Function ВсеПоляЗаполнены() As Boolean
Dim ctrl As Control
For Each ctrl In Me.Controls
' Проверяем только текстовые поля и комбобоксы
If TypeName(ctrl) = "TextBox" Or TypeName(ctrl) = "ComboBox" Then
If ctrl.Value = "" Then
MsgBox "Заполните поле: " & ctrl.Name, vbExclamation
ctrl.SetFocus
ВсеПоляЗаполнены = False
Exit Function
End If
End If
Next ctrl
ВсеПоляЗаполнены = True
End Function
Сообщает название поля в коде UserForm, например «Пожалуйста, заполните поле: ComboBox1«, что может быть непонятно для пользователя.
3. Проверка при изменении данных (опционально)
Private Sub TextBox1_Change()
CommandButton1.Enabled = (TextBox1.Value <> "" And TextBox2.Value <> "")
End Sub
Private Sub TextBox2_Change()
CommandButton1.Enabled = (TextBox1.Value <> "" And TextBox2.Value <> "")
End Sub
Дополнительно:
-
- Для обязательных полей можно добавить подсказки или пометку «*»
-
- Можно выделять незаполненные поля красным цветом:
If TextBox1.Value = "" Then
TextBox1.BackColor = RGB(255, 200, 200)
Else
TextBox1.BackColor = vbWhite
End If
-
- Для более сложных проверок используют регулярные выражения или дополнительные условия (например, проверку формата email).
А как добавить макрос?
Если что, напомним как добавить макрос и заставить его работать:
1) В Excel, Word, PP и т.д., нажать Alt + F11, или кнопку Visual Basic на вкладке Разработчик. В меню редактора VBA вставить новый модуль Insert — Module
и вставить в окошко редактора расположенный выше код, далее можно сохранить код, нажав Ctrl + S и закрыть окно VBA (Alt + F4);
2) Нажать Alt + F8, выбрать макрос и нажать кнопку Выполнить.