- •Лекция 8. Пользовательские формы
- •Пользовательские формы
- •Свойства пользовательской формы
- •Методы пользовательской формы
- •События пользовательской формы
- •Управляющие элементы
- •События управляющих элементов
- •Примеры разработки пользовательских форм
- •Поиск в диапазоне ячейки с заданным значением
- •Поиск в диапазоне ячейки с заданным значением с учётом регистра
- •Добавление нового сотрудника
- •Использование управляющих элементов на рабочем листе
- •Стандартные диалоговые окна
- •Функция vba InputBox
- •Метод InputBox объектаApplication
- •Функция vba MsgBox
Стандартные диалоговые окна
Функция vba InputBox
Функция VBA InputBoxзапрашивает у пользователя одно значение. Она всегда возвращает строку, поэтому при необходимости нужно преобразовывать введённую строку в значение нужного типа. ФункцияInputBoxимеет следующий синтаксис:
InputBox(Prompt [, Title] [, Default] [, xpos] [, ypos] [, Helpfile, Context])
Функция имеет один обязательный параметр Prompt– запрос, отображаемый в окне ввода. Также можно указать заголовок окна (Title), значение по умолчанию, вставляемое в поле ввода (Default), позицию окна на экране (xpos,ypos) и раздел справочной системы (Helpfile,Context). Окно ввода имеет две кнопки –ОКиОтмена. При нажатии кнопкиОтменафункция возвращает пустую строку.
Dim str As String
str = InputBox("Введите строку")
Для ввода значений не строкового, а другого типа необходимо использовать функции преобразования – CBool,CByte,CCur,CDate,CDbl,CInt,CLng,CSng,CStr,CVar.
Dim n As Integer, str As String
On Error Resume Next
n = CInt(InputBox("Введите n:", "Ввод", 5))
If Err.Number <> 0 Then Exit Sub
...
On Error GoTo 0
Метод InputBox объектаApplication
Метод InputBoxобъектаApplicationимеет три преимущества по сравнению с функциейInputBox:
возможность задать тип возвращаемого значения;
возможность указать диапазон рабочего листа;
автоматическая проверка правильности введённых данных.
Метод InputBoxимеет следующий синтаксис:
InputBox(Prompt [, Title] [, Default] [, Left] [, Top] [, Helpfile, Context] [, Type])
Метод InputBoxимеет те же параметры, что и функцияInputBox, и один дополнительный параметрType, который указывает, данные какого типа должен возвращать метод. Этот параметр является необязательным, и в случае его отсутствия метод возвращает строку. Если введённое значение не соответствует требуемому типу, приложениеMicrosoftExcelвыдаёт сообщение об ошибке и позволяет пользователю ввести другое значение.
Код |
Тип возвращаемого значения |
0 |
Формула |
1 |
Число |
2 |
Строка |
4 |
Логическое значение |
8 |
Диапазон |
16 |
Ошибка |
Range("F2").value=Application.InputBox("Введите число", "Ввод числа",Type:=1)
Range("F3").value=Application.InputBox("Введите строку", "Ввод строки",Type:=2)
Range("F4").value=Application.InputBox("Введите логическое значение", _
"Ввод логического значения", Type:=4)
Range("F1").value=Application.InputBox("Введите формулу", "Ввод формулы",Type:=0)
Sub EraseRange()
Dim userRange As Range
On Error GoTo Canceled
Set userRange = Application.InputBox(Prompt:="Удаляемый диапазон:", _ Title:="Удаление диапазона", _ Default:=Selection.Address, Type:=8)
userRange.Clear
userRange.Select
Canceled:
End Sub
Функция vba MsgBox
Функция VBA MsgBoxпредоставляет пользователю простой способ отображения сообщения. Также она возвращает реакцию пользователя на запрос. ФункцияMsgBoxимеет следующий синтаксис:
MsgBox(Prompt [, Buttons] [, Title] [, Helpfile, Context])
Параметр Buttonsопределяет, какие кнопки и значки будут отображены в окне.
Константа |
Значение |
Назначение |
vbOKOnly |
0 |
Отображается только кнопка ОК (по умолчанию) |
vbOKCancle |
1 |
Отображаются кнопки OK и Отмена |
vbAbortRetryIgnore |
2 |
Отображаются кнопки Прервать, Повтор и Пропустить |
vbYesNoCancel |
3 |
Отображаются кнопки Да, Нет и Отмена |
vbYesNo |
4 |
Отображаются кнопки Да и Нет |
vbRetryCancel |
5 |
Отображаются кнопки Повтор и Отмена |
vbCritical |
16 |
Отображается значок важного сообщения |
vbQuestion |
32 |
Отображается значок запроса |
vbExclamation |
48 |
Отображается значок предупреждающего сообщения |
vbInformation |
64 |
Отображается значок информационного сообщения |
vbDefaultButton1 |
0 |
По умолчанию выделена первая кнопка |
vbDefaultButton2 |
256 |
По умолчанию выделена вторая кнопка |
vbDefaultButton3 |
512 |
По умолчанию выделена третья кнопка |
Функция MsgBoxвозвращает число, соответствующее кнопке, нажатой пользователем.
Константа |
Значение |
Нажатая кнопка |
vbOK |
1 |
ОК |
vbCancel |
2 |
Отмена |
vbAbort |
3 |
Прервать |
vbRetry |
4 |
Повтор |
vbIgnore |
5 |
Пропустить |
vbYes |
6 |
Да |
vbNo |
7 |
Нет |
MsgBox("Сообщение", vbOKOnly + vbInformation, "Заголовок")
ans = MsgBox("Сообщение", vbOKCancel + vbQuestion, "Заголовок")
...
ans = MsgBox("Сообщение", vbRetryCancel + vbCritical, "Заголовок")
...
ifMsgBox("Сообщение", vbYesNo + vbExclamation +vbDefaultButton2, _ "Заголовок") =vbYesThen
...
Else
...
End If