- •1.Введение в программирование на vba Понятие объекта
- •Среда программирования
- •Типы данных
- •Переменные
- •Стандартные элементы управления. Объект Форма(UserForm) и элемент Кнопка(CommandButton)
- •Элемент Кнопка
- •Стандартные окна ввода и вывода сообщений
- •Окно сообщения
- •Окно ввода
- •Практические задания Задание 1.1
- •Задание 1.2
- •Задание 1.3
- •Задание 1.4
- •2.Реализация линейных алгоритмов Программирование арифметических выражений
- •Математические операции
- •Стандартные математические функции
- •Элементы Надпись(Label) и Поле(TextBox) Элемент Поле
- •Элемент Надпись
- •Практические задания Задание 2.1
- •Задание 2.2
- •Задание 2.3
- •3.Реализация алгоритмов с условиями Программирование условий Операторы сравнения
- •Логические операции
- •Инструкция If…Then…Else
- •Инструкция Select Case
- •Функции, используемые при программировании условий
- •Элементы Рисунок(Image), Счетчик и Полоса прокрутки(ScrollBar) Элемент Рисунок
- •Элемент Счетчик
- •Элемент Полоса прокрутки
- •Практические задания Задание 3.1
- •Задание 3.2
- •З адание 3.3
- •4.Реализация циклических алгоритмов Программирование циклов Цикл For…Next
- •Цикл Do While…Loop / Do…Loop While
- •Цикл Do Until...Loop / Do…Loop Until
- •Практические задания Задание 4.1
- •Задание 4.2
- •5.Использование процедур и функций в программах на vba Процедуры и функции
- •Элементы Рамка(Frame), Флажок(CheckBox), Переключатель(OptionButton), Выключатель(ToggleButton) Элемент Рамка
- •Элемент Флажок
- •Элемент Выключатель
- •Элемент Переключатель
- •Практические задания Задание 5.1
- •6.Использование структурированных типов данных на примере массивов Понятие массива. Работа с массивами
- •Практические задания Задание 6.1
- •Практические задания Задание 7.1
- •Задание 7.2
- •Задание 7.3
- •Задание 7.4
- •Задание 7.5
- •Задание 7.6
- •Задание 7.7
- •Задание 7.8
- •8.Работа с макросами в ms Excel Основные объекты ms Excel
- •Понятие макроса. Создание, редактирование, выполнение макросов
- •Цикл For Each
- •Инструкция With
- •Практические задания Задание 8.1
- •Задание 8.2
- •Задание 8.3
- •9.Создание приложений, управляемых с помощью диалоговых окон Элементы Поле со списком (ComboBox), Список (ListBox)
- •Практические задания Задание 9.1
- •Задание 9.2
- •10.Рекомендуемая литература
Элемент Полоса прокрутки
Элемент Полоса прокрутки (ScrollBar) позволяет выбирать значение из заданного диапазона с помощью мыши (изменяя положение бегунка).
Основные свойства элемента Полоса прокрутки:
Min |
Устанавливает наименьшее значение для элемента, отвечающее крайнему левому или крайнему верхнему положению в соответствующей полосе прокрутки. Диапазон рекомендуемых значений от -32767 до 32767. |
Max |
Устанавливает наибольшее значение для элемента, отвечающее крайнему правому или крайнему нижнему положению в соответствующей полосе прокрутки. Диапазон рекомендуемых значений от -32767 до 32767. |
Value |
Значение из диапазона от Min до Max, которое соответствует положению бегунка полосы прокрутки. |
LargeChange |
Устанавливает величину изменения свойства Value после щелчка на полосе прокрутки между бегунком и кнопкой со стрелкой (целое от 1 до 32767) |
SmallChange |
Устанавливает величину изменения свойства Value после щелчка на кнопке со стрелкой (целое от 1 до 32767) |
ControlSource |
Определяет ячейку рабочего листа, которая связывается со значением элемента. Если изменяется значение свойства Value, то автоматически изменяется и значение этой ячейки, и наоборот. |
Orientation |
Определяет ориентацию элемента (вертикальную или горизонтальную). |
События элемента Полоса прокрутки:
Change |
Возникает, когда бегунок занял новое положение, или при щелчке на кнопке со стрелкой, или при изменении значения свойства Value в программе. |
Scroll |
Возникает при движении бегунка (непрерывно). |
Практические задания Задание 3.1
Добавим в программу, созданную в задании 2.1 для вычисления значения выражения, необходимые проверки. Тексты процедур приведены ниже.
Private Sub CommandButton1_Click()
CommandButton2.Enabled = False
X = InputBox("Введите значение")
If X = "" Then
R = MsgBox("Вы ничего не ввели", _
vbOKOnly + vbInformation, "Сообщение")
Exit Sub
ElseIf IsNumeric(X) = False Then
R = MsgBox("Вы ввели не число", _
vbOKOnly + vbExclamation, "Предупреждение")
Exit Sub
ElseIf X = 2 Then
R = MsgBox("Недопустимое значение аргумента", _
vbOKOnly + vbCritical, "Критическое сообщение")
Exit Sub
End If
CommandButton2.Enabled = True
End Sub
Private Sub CommandButton3_Click()
R = MsgBox("Закончить работу?", _
vbYesNo + vbQuestion, "Вопрос")
If R = vbYes Then UserForm1.Hide
End Sub
Если значение переменной не введено или введено неверно, то кнопка «Вывод» недоступна. Это достигается за счет того, что в начале работы процедуры, в которой вводится значение, свойство Enabled у кнопки устанавливается False. Если ни одно из условий не выполнится, в конце процедуры значению свойства будет присвоено True. Если какое-нибудь условие выполнится, то после выполнения Exit Sub процедура завершит работу досрочно, и значение останется равным False.
Первая проверка показывает, как определить, ввёл ли пользователь что-нибудь в окно ввода. Если он ничего не ввел или нажал Esc, то значение функции InputBox будет равно "" (пустая строка).
Далее проверяется, можно ли строку, введённую пользователем, преобразовать в число. Для этого используется стандартная функция IsNumeric. Значение функции равно True, если это возможно, и False – в противном случае. В VBA имеются и другие функции с аналогичным назначением: IsDate, IsArray и т.д.
Последняя проверка требуется для того, чтобы во время выполнения программы не возникла ошибка при делении.
В этом примере также продемонстрированы возможности функции MsgBox. Вид окна определяет значение второго параметра. В новом варианте процедуры для кнопки «ОК» показано, как можно создать окно сообщения с несколькими кнопками, и как проанализировать ответ пользователя. Все константы подробно описаны в Справке. Функцию MsgBox с двумя или большим числом аргументов можно использовать только в выражении, поэтому в нашем случае используется оператор присваивания даже в тех случаях, когда ответ пользователя не анализируется.