- •Содержание
- •Раздел 1. Быстрый старт 2
- •Раздел 2. Редактор Visual Basic 11
- •Immediate Window (окно проверки) 15
- •Раздел 3. Переменные и типы данных 27
- •Раздел 4. Операторы управления 51
- •Раздел 5. Процедуры, подпрограммы и функции 66
- •Раздел 6. Объекты ms Excel 101
- •Раздел 7. Пользовательские формы 139
- •Immediate Window (окно проверки) 177
- •Введение
- •Раздел 1.Быстрый старт Использование макрорекордера
- •Запись макроса
- •Запуск макроса
- •Абсолютные и относительные ссылки Запись формулы на рабочем листе
- •Макрорекордер
- •Диалоговые окна для ввода/вывода данных
- •Функция InputBox
- •Функция MsgBox
- •Раздел 2.Редактор Visual Basic
- •Окна редактора vb
- •Project Window (окно проекта)
- •Properties Window (Окно свойств)
- •Code (окно программы)
- •Immediate Window (окно проверки)
- •Получение справки
- •Запись процедур
- •Режимы работы с программой
- •Ошибки и их обнаружение
- •Отладка
- •Меню и панели инструментов Visual Basic
- •Панели инструментов Стандартная панель инструментов
- •Панель инструментов отладки
- •Раздел 3.Переменные и типы данных Объявление переменных
- •Важность объявления переменных
- •Область видимости переменных
- •Время жизни переменных
- •Инициализация переменных
- •Операции с элементарными данными
- •Оператор присваивания
- •Выполнение операций
- •Арифметические операции
- •Операции сравнения
- •Оператор Like
- •Логические операции
- •Символьные операции
- •Приоритет операций
- •Операции с другими типами данных
- •Объектные переменные
- •Массивы
- •Динамические массивы
- •Пользовательский тип
- •Раздел 4.Операторы управления
- •Условный оператор If
- •Оператор выбора Select Case
- •Операторы цикла
- •Цикл For…Next
- •Цикл For Each…Next
- •Оператор Set
- •Цикл Do…Loop
- •Цикл While…Wend
- •Раздел 5.Процедуры, подпрограммы и функции
- •Классификация процедур
- •Структура и объявление процедуры
- •Синтаксис объявления процедуры общего типа
- •Синтаксис объявления функции
- •Вызов процедуры
- •Параметры и аргументы
- •Возврат значения функции
- •Использование процедур-функций на рабочем листе
- •Поименованные аргументы
- •Использование необязательных аргументов
- •Использование параметра ParamArray
- •Вызов процедур другого проекта
- •Автопроцедуры
- •Событийные процедуры
- •Рекурсивные процедуры
- •Встроенные функции Классы функций
- •Использование табличных функций
- •Организация интерфейса при помощи встроенных функций
- •Функция MsgBox
- •Функция InputBox
- •Строковые функции
- •Примеры на использование различных строковых функций Функция Format
- •Функция Val
- •Функции Len, Mid
- •Функция Left
- •Функция Instr
- •Функция Chr
- •Математические функции
- •Функции Int и Fix
- •Функция Log
- •Функции Randomize и Rnd
- •Функции даты и времени
- •Примеры функций даты и времени Функции Day, Month, Year, DateSerial
- •Функции Now, Time, Timer
- •Функция WeekDay
- •Функции Hour, Minute, Second
- •Раздел 6.Объекты ms Excel
- •Свойства объектов
- •Методы объектов
- •Модель объектов
- •Коллекции объектов
- •Обращение к объекту Контейнеры
- •Ссылка на объект
- •Оператор With
- •Использование объектных переменных
- •Объект Application
- •Активные объекты
- •Свойства, влияющие на высвечивание на экране Свойство DisplayAlerts (r/w Boolean)
- •Свойства DisplayFormulaBar (r/w Boolean), DisplayStatusBar (r/w Boolean)
- •Свойство ScreenUpdating (r/w Boolean)
- •Свойства Top, Left, Height, Width, UsableWidth, WindowState
- •Свойство Visible (r/w Boolean)
- •Другие свойства объекта Application
- •Методы Метод Calculate
- •Метод CheckSpelling
- •Метод OnTime
- •Метод Wait
- •Коллекции объектов
- •Объекты Workbooks и Workbook
- •Событийные процедуры
- •Объекты Sheets, WorkSheets и WorkSheet
- •Свойства Свойство Name (r/w String)
- •Свойство Type (r/o String)
- •Свойство UsedRange
- •Свойства Next и Previous
- •Свойство Parent
- •Свойство Visible (r/w Boolean)
- •Методы Метод Add
- •Методы Move и Select
- •Событийные процедуры
- •Объект Range
- •Свойства Cвойство Range
- •Свойство Cells
- •Свойство Offset
- •Метод Union и свойство Areas
- •Свойства Column и Row (r/o Integer)
- •Свойства Columns и Rows
- •Свойство CurrentRegion
- •Cвойства, связанные с шириной и высотой ячейки
- •Методы Методы Select и Activate
- •Метод Clear
- •Цветовое оформление объекта Range Свойство ColorIndex
- •Свойство Color
- •Раздел 7.Пользовательские формы
- •Режимы работы с формой
- •Режим конструктора
- •Элементы управления
- •Событийные процедуры
- •Режим выполнения
- •Объекты UserForm и Controls
- •Разработка приложения
- •Приложение 1
- •Конструирование начальной формы
- •Свойства формы и элементов управления
- •Создание событийных процедур
- •Конструирование формы для выбора рабочего листа
- •Создание событийных процедур
- •Элемент ListBox
- •Событийная процедура инициализации формы
- •Завершение разработки приложения
- •Связь формы с ячейками рабочего листа
- •Элемент TextBox
- •Элемент ListBox
- •Приложение 2
- •Конструирование форм
- •Процедуры
- •Приложение a. Справочная система Просмотр объектов, их свойств и методов (Object Browser)
- •Окно Object Browser
- •Панель инструментов Object Browser
- •Выход из Object Browser
- •Интерактивная подсказка
- •Приложение b. Инструментальные средства отладки программ
- •Контрольные точки или точки останова
- •Трассировка или пошаговое выполнение программы
- •Использование объекта Debug
- •Окна отладчика
- •Immediate Window (окно проверки)
- •Окно значения переменной
- •Locals Window (окно локальных переменных)
- •Окно контрольных значений (Watches)
- •Приложение c. Основные формы записи алгоритмов
- •Понятие "алгоритм"
- •Классификация алгоритмов
- •Способы записи алгоритмов
- •Запись на естественном языке
- •Изображение алгоритма в виде графических символов
- •Представление основных типов алгоритмов в виде блок-схем
Событийные процедуры
На процедурном листе формы размещаются процедуры обработки событий, связанных с формой и объектами формы. Для перехода на процедурный лист используйте команду Code из меню View или клавишу F7 в режиме конструктора формы.
На этом же листе могут размещаться дополнительные процедуры, необходимые для выполнения событийных процедур. Дополнительные процедуры располагаются в разделе General. Процедуры, общие для всего проекта в целом, рекомендуется размещать в стандартных модулях проекта.
Вызов процедур происходит обычным образом: на отдельной строке указывается имя процедуры общего типа и ее параметры, если они существуют; процедуры-функции используются в операторах присваивания или в выражениях.
Важно
Если из процедуры, размещенной в стандартном модуле или на процедурном листе некоторого объекта, необходимо обратиться к процедуре, находящейся на процедурном листе формы, то следует указать ссылку на имя этой формы перед именем процедуры (разделитель – точка).
Например, вызов процедуры text_Analysis, расположенной на процедурном листе формы UserForm1 будет выглядеть так: UserForm1.text_Analysis.
Каждый элемент управления и сама форма обладают некоторыми событиями, при этом одно из событий является событием по умолчанию. Например, событием по умолчанию для командной кнопки является нажатие на нее левой кнопкой мыши (Click).
Важно
Двойной щелчок на элемент управления или свободное пространство формы высвечивает процедуру события по умолчанию соответствующего объекта.
Для записи любой событийной процедуры следует
перейти на процедурный лист формы,
в окне объектов (вверху слева) выбрать объект формы,
в окне событий (вверху справа) выбрать событие объекта.
Автоматически появятся команды начала и конца событийной процедуры, ассоциированной с выбранным событием объекта. Процедура имеет стандартное имя, состоящее из имени объекта и названия события, которые разделены нижним подчеркиваием (_).
Важно
Имя событийной процедуры не должно изменяться разработчиком, за исключением случаев, когда команды, записанные в этой процедуре, не должны быть предназначены для чего-нибудь другого, кроме выполнения при возникновении события.
Пример
Форма-приветствие.
Вставьте новую форму. В папке Forms появится строка UserForm1.
Рис. 7.3. Форма-приветствие с двумя элементами управления
Разместите на ней два элемента управления TextBox и CommandButton. Они получат стандартные имена TextBox1 и CommandButton1.
Двойной щелчок на элемент CommandButton1 переводит на процедурный лист формы. При этом точка вставки будет установлена в процедуре CommandButton1_Click().
Рис. 7.4. Событийные процедуры нажатия на кнопку и инициализации формы
Введите тексты событийных процедур, показанных на рис. 7.4. Для вставки событийной процедуры инициализации формы UserForm_Initialize выберите объект UserForm в окне объектов и событие Initialize в списке событий.
Режим выполнения
Для запуска формы используется команда Run Sub/UserForm меню Run (можно нажать кнопку Run или клавишу F5). В режиме выполнения форма высвечивается на фоне активного листа активной рабочей книги.
Рис. 7.5. Форма-приветствие в режиме выполнения
Форма высветит приветствие после ввода пользователем своего имени в поле ввода и нажатия на командную кнопку CommandButton1.
В режиме выполнения одновременно могут быть высвечены несколько форм, но только одна форма активна в единицу времени. Ее окно расположено поверх остальных окон и титульная строка высвечена ярко. Неактивные формы могут быть невидны, например, спрятаны оператором Hide.
В режиме выполнения формы пользователь выполняет некоторые действия, каждому из которых соответствует событие, которое обрабатывается системой: устанавливается объект, с которым производилось действие; определяется тип происшедшего события, и в качестве реакции выполняется некоторая процедура – событийная процедура объекта.
Действия пользователя могут инициировать запуск других форм. Последняя загруженная форма является активной.
Важно
При загрузке формы резервируется некоторый объем оперативной памяти и в какой-то момент может произойти нехватка памяти, поэтому следует выгружать из памяти уже ненужные формы командой Unload, размещенной в событийной процедуре формы.
Форма находится в режиме выполнения до выгрузки ее из памяти командой Unload или нажатием на кнопку закрытия окна формы.
По окончании любой событийной процедуры происходит высвечивание формы, если в конце процедуры не стоит команда выгрузки формы Unload или команда скрытия формы Hide.
Переменные, определенные на уровне модуля процедурного листа выполняемой формы, или определенные на модульном уровне в стандартных модулях (глобальные переменные), сохраняют свои значения на все время выполнения формы.
Локальные переменные, определенные в событийных процедурах не как Static, теряют свои значения по окончании выполнения событийной процедуры и высвечивания формы.
Для выхода из режима выполнения формы можно нажать на кнопку закрытия окна или, если это запрограммировано, выполнить некоторое действие (обычно это нажатие на командную кнопку) – соответствующая событийная процедура закрывает форму.
После завершения работы всех загруженных форм последняя активная форма автоматически открывается в режиме конструктора.