- •2.1. Алфавит и словарь языка
- •2.2. Переменные
- •2.3. Константы
- •2.4. Строковые переменные
- •2.5. Массивы
- •2.6. Пользовательские типы данных
- •2.7. Операции VBA
- •2.8. Объектная модель Excel
- •2.8.1. Свойства и методы объектов
- •2.8.2. Отображение объектной модели Excel
- •2.8.2.1. Иерархия объектной модели
- •2.8.2.2. Ссылка на объекты в коде VBA
- •2.8.3. Работа с объектами
- •2.8.3.1. Задание свойств объекта
- •2.8.3.2. Использование методов объекта
- •2.8.3.3. Переменные-объекты
- •2.8.3.4. Коллекции
- •2.8.3.5. Метод Add
- •2.8.3.6. Свойство Count
- •2.8.4. Свойства и методы основных объектов Excel
- •2.8.4.1. Объект Application
- •2.8.4.2. Объект Worksheet
- •2.8.4.3. Объект Range
- •2.8.5. Просмотр объектов
- •2.8.6. Использование справочной системы
- •2.8.6.1. Использование функциональной клавиши F1
- •2.8.6.2. Использование помощника
- •2.9. Ввод и вывод данных
- •2.9.3. Метод InputBox
- •2.9.4. Объединение текстовых строк
- •2.10. Концепция событий Excel
- •2.10.1. Типы событий Excel
- •2.10.2. События объекта Workbook
- •2.10.3. События объекта Worksheet
- •2.10.4. События объекта Application
- •2.10.5. События объекта UserForm
- •2.10.6. События, не связанные с конкретными объектами
- •2.10.6.1. Метод OnKey
- •2.10.6.2. Событие OnTime
- •2.11. Формы пользователя
- •2.11.1. Свойства, методы и события экранных форм
- •2.11.1.1. Некоторые свойства форм
- •2.11.1.2. Некоторые методы форм
- •2.11.1.3. Некоторые события форм
- •2.11.2. Элементы управления
- •2.11.2.1. Элемент управления Label (Надпись)
- •2.11.2.1.1. Окно свойств формы
- •2.11.2.2. Элемент управления CommandButton (Кнопка)
- •2.11.2.3. Элемент управления TextBox (Текстовое поле)
- •2.11.2.4. Элемент управления ComboBox (комбинированный список)
- •2.11.2.5. Элемент управления ListBox (список)
- •2.11.2.6. Элемент управления CheckBox (Флажок)
- •2.11.2.7. Элемент управления ToggleButton (Выключатель)
- •2.11.2.8. Элемент управления OptionButton (Переключатель)
- •2.11.2.9. Элемент управления Image (Рисунок)
- •2.11.2.12. Элемент управления RefEdit (Поле со свёртыванием)
- •2.11.2.13. Элементы управления на рабочем листе
- •2.12. Инструкции VBA
- •2.12.1. Оператор присваивания
- •2.12.2. Инструкция Set
- •2.12.3. Циклы
- •2.12.3.1. Инструкция For… Next
- •2.12.3.2. Инструкция While…Wend
- •2.12.3.3. Инструкция Do... Loop
- •2.12.3.4. Инструкция For Each…Next
- •2.12.4. Инструкции перехода
- •2.12.4.1. Инструкция условного перехода If…Then…Else
- •2.12.4.2. Инструкция Select…Case
- •2.12.4.3. Инструкция безусловного перехода GoTo
- •2.12.4.4. Инструкции перехода к обработчику ошибок On Error
- •2.12.4.5. Инструкции прерывания выполнения блока Exit
- •2.13. Функции VBA
- •2.13.1. Встроенные функции
- •2.13.1.1. Математические функции
- •2.13.1.2. Функции преобразования данных
- •2.13.1.3. Функции даты и времени
- •2.13.1.4. Строковые функции
- •2.13.1.5. Примеры использования функций VBA
- •2.13.1.5.1. Удаление ненужных символов
- •2.13.1.5.2. Определение длины строки
- •2.13.1.5.3. Сравнение и поиск строк
- •2.13.1.5.4. Выделение части строки
- •2.13.1.5.5. Форматирование значений данных
- •2.13.2. Функции, определённые пользователем
- •2.14. Файлы VBA
- •2.14.1. Типы файлов в VBA
- •2.14.2. Открытие и закрытие файла
- •2.14.3. Ввод данных в файл последовательного доступа
- •2.14.4. Вывод данных из файла последовательного доступа
- •2.14.5. Работа с файлом произвольного доступа
- •2.15. Создание процедуры
- •2.16. Выполнение процедуры
- •2.17. Сохранение процедуры
- •2.18. Запись последовательности действий пользователя
- •2.19. Просмотр кода макроса
- •3.1. Тестирование и отладка как этап разработки приложений
- •3.1.1. Отладка
- •3.1.1.1. Режим останова
- •3.1.1.2. Использование окна Immediate
- •3.1.1.2.1. Просмотр значений в окне Immediate
- •3.1.1.3. Пошаговое выполнение программ
- •3.1.2. Исправление ошибок
- •Библиографический список
- •Оглавление
43
этот аргумент опущен, диалоговое окно помещается по вертикали примерно на одну треть высоты экрана.
Аргументы helpfile и context используются в том случае, если в приложении создаётся собственная система справки.
Возвращаемым значением функции InputBox является значение, введенное пользователем в поле ввода.
Пример
Sub ФункцияInputBox() Dim Данное As Variant
Данное = InputBox("Введите данное") MsgBox "Введённое данное равно " & Данное
ActiveCell.Value = Данное End Sub
Тип возвращаемого значения определен как Variant, т.е. тип определяется введенным значением.
2.9.3.Метод InputBox
В Excel имеется еще один способ ввода данных пользователем в интерактивном режиме, который имеет называние метод InputBox. Формат метода:
Application.InputBox(Prompt,Title,Default,Left,Top,HelpFile,HelpContextId,Type)
Метод InputBox является методом объекта Application, и поэтому здесь присутствует слово Application. Аргументы этого метода, кроме Type, такие же, как и у функции InputBox. Основное отличие синтаксиса метода InputBox от синтаксиса одноименной функции заключается в последнем аргументе Type. Необязательный аргумент Type позволяет явно указать тип возвращаемого значения. В приведённой ниже таблице содержатся значения, которые может принимать этот аргумент.
|
|
Значения аргумента Type |
Значение |
|
Возвращаемое значение |
|
|
|
0 |
|
Формула |
|
|
|
1 |
|
Число |
|
|
|
2 |
|
Текст (строка) |
|
|
|
4 |
|
Логические значения, такие как ИСТИНА и ЛОЖЬ |
|
|
|
8 |
|
Ссылка на ячейку |
|
|
|
16 |
|
Значение ошибки |
|
|
|
64 |
|
Массив значений |
|
|
|
Пример
Sub Пример()
Dim Данное As Integer
Данное = Application.InputBox("Введите число:", , , , , , , 1)
44
MsgBox "Введённое данное равно " & Данное
End Sub
Запятые в выражении Application.InputBox указывают места пропущенных аргументов. Последний аргумент – Type имеет значение 1. Это показывает, что допустимыми вводимыми значениями являются только числа.
Преимуществом метода InputBox является возможность обнаружения ошибок при вводе данных. Например, если при выполнении процедуры Пример введено не число, то будет выведено следующее сообщение об ошибке:
Можно суммировать значения аргумента Type. Например, если нужно, чтобы метод мог возвращать как текст, так и числа, следует сделать аргумент Type равным 3 (1 + 2). Если аргумент Type не задан, то метод InputBox по умолчанию возвращает текст.
Пример
Sub ФункцияInputBox2() Dim Данное As Variant
Данное = Application.InputBox("Введите данное:", , , , , , , 3) MsgBox "Введённое данное равно " & Данное
End Sub
Пропуск отмечающих запятых, а также перестановка аргументов функции приводит к ошибкам несовпадения типов. Для предотвращения ошибок программирования функций при вводе аргументов VBA предоставляет возможность передавать значения аргументов функции, используя именованные аргументы функций. Приведённая ниже процедура Пример2 иллюстрирует использование именованных аргументов функций Prompt, Title и Type; она решает ту же задачу, что и процедура Пример.
Sub Пример2()
Dim Данное As Integer
Данное = Application.InputBox(Promp t:= "Введите число:", _ Title:="Проверка типа данных", Type:=1)
MsgBox Prompt := "Введённое данное равно " & Данное, _ Title:="Проверка ввода данных"
End Sub
Следует обратить внимание на то, что:
имя аргумента отделяется от его значения символом “:=” (двоето-
чие и равно);
порядок перечисления именованных аргументов не обязательно совпадает с их порядком в формате функции;
45
список аргументов функции MsgBox не заключается в скобки;
в операторе Данное = Application.InputBox … функция InputBox ис-
пользуется как метод приложения Application, и поэтому её аргу-
менты заключаются в скобки.
Ниже приведены результаты выполнения процедуры Пример2.
2.9.4.Объединение текстовых строк
Если надо объединить несколько текстовых строк в одну, используется символ конкатенации &. Его применение, а также применение других символьных констант, используемых при выводе сообщений, на экран показано в приведённой ниже процедуре ОбъединениеСтрок.
Sub ОбъединениеСтрок() Dim Имя As String
Dim Сообщение As String
Имя = InputBox("Введите ваше имя: ")
'Следующая строка для окна сообщения объединяет 'слово "Привет" со значением переменной Имя
MsgBox "Привет, " & Имя & "!"
Сообщение = "Это пример объединения нескольких" Сообщение = Сообщение & " строк в одну большую" Сообщение = Сообщение & " строку." & vbNewLine
Сообщение = Сообщение & "vbNewLine - константа, позволяющая" Сообщение = Сообщение & " начинать новую строку"
MsgBox Сообщение
End Sub
Ниже приведены результаты выполнения процедуры ОбъединениеСтрок.