- •Содержание
- •Раздел 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. Основные формы записи алгоритмов
- •Понятие "алгоритм"
- •Классификация алгоритмов
- •Способы записи алгоритмов
- •Запись на естественном языке
- •Изображение алгоритма в виде графических символов
- •Представление основных типов алгоритмов в виде блок-схем
Связь формы с ячейками рабочего листа
Элементы управления могут быть связаны с объектом Range, представляющим интервал ячеек рабочего листа.
Элемент TextBox
Свойство ControlSource элемента TextBox указывает на ячейку рабочего листа, связывая этот элемент формы с объектом Range, таким образом, что в режиме выполнения формы содержимое заданной ячейки высветится в элементе TextBox и, наоборот, текст, введенный в TextBox, автоматически попадает в связанную с ним ячейку.
Свойство ControlSource задается как ссылка на ячейку, например, B2. В таком виде ссылка указывает на ячейку активного рабочего листа. Для ссылки на ячейку произвольного листа адрес ячейки указывается после имени листа, разделитель – восклицательный знак, например, MySheet!B2.
Оператор установки свойства ControlSource объекта Inp_Box рассмотренного выше примера может выглядеть так: Inp_Box.ControlSource="MySheet!B2", если анализируемый текст расположен в ячейке B2 рабочего листа MySheet.
Элемент ListBox
Свойство RowSource объекта ListBox связывает список с ячейками рабочего листа. Интервал ячеек задается ссылкой на адрес ячейки левого верхнего угла и адрес ячейки нижнего правого угла, разделенные двоеточием. Если интервал ячеек расположен на конкретном листе, то имя листа предшествует границам интервала с восклицательным знаком в качестве разделителя, например, MySheet!A15:C43.
В событийной процедуре инициализации формы рассмотрен третий способ создания списка, связывающий значения списка с ячейками рабочего листа.
Private Sub UserForm_Initialize() 'значения списка из ячеек рабочего листа Dim wSheets As Integer Dim i As Integer wSheets = WorkSheets.Count lst_Sheet.Clear Worksheets(Worksheets.Count).Activate For i = 1 To wSheets Cells(i, 1) = WorkSheets(i).Name Next i lst_Sheet.RowSource = ActiveSheet.Name & "!A1:A" & wSheets End Sub
|
Подсчитывается количество рабочих листов, список очищается и активизируется последний рабочий лист. Перечень имен рабочих листов создается в последовательных ячейках столбца A, начиная с первой. В свойстве RowSource устанавливается ссылка на созданный перечень листов, связывая таким образом элемент ListBox формы Act_Sheet с ячейками последнего рабочего листа. |
Приложение 2
Форма имитирует электронные часы, которые посекундно отсчитывают время.
Пользователь вводит количество секунд, в течение которых будут высвечиваться электронные часы. Возможен отсчет вперед от текущего времени или назад от предполагаемого времени останова до времени запуска формы.
Конструирование форм
Для приложения спроектируем две формы (см. рис. 7.15).
Первая форма (начальная) будет выполнять настройки пользователя. Пользователь может выбрать из списка цвет фона электронных часов. При выборе опции CountUp устанавливается прямой отсчет времени, а при выборе опции CountDown устанавливается обратный отсчет времени. При выборе любой из этих двух опций загружается следующая форма. Нажатие на командную кнопку Exit закрывает форму и завершает приложение.
Bторая форма будет запускать электронные часы. Пользователь может установить количество секунд, в течение которых будет высвечиваться время. Нажатие командной кнопки Start или щелчок на свободное пространство формы запускает электронные часы. Кнопки со стрелками инициируют отсчет времени назад (левая кнопка) или отсчет времени вперед (правая кнопка) без возвращения в основную форму. Командная кнопка New_select позволяет вернуться в основную форму и сделать новые настройки.
Вставьте две новые формы, расположите на них элементы управления и установите их свойства в соответствии с рисунками и таблицей.
(a)
|
Рис. 7.15. (a) -форма для пользовательских настроек; (b) - форма для запуска электронных часов |
Свойства элементов управления форм
Тип элемента |
Комментарий |
Свойства |
Значение свойства |
Начальная форма для настроек пользователя |
|||
UserForm |
Форма |
Name |
el_watch_custom |
Caption |
Make Selection |
||
Label |
Поясняющий текст для списка цветов |
Name |
Label1 |
Caption |
Select color of e_watch |
||
Label |
Поясняющий текст для опции отсчета времени вперед |
Name |
Label2 |
Caption |
Count_Up |
||
Label |
Поясняющий текст для опции отсчета времени назад |
Name |
Label3 |
Caption |
Count_Down |
||
CommandButton |
Кнопка завершения работы с формой |
Name |
Cmd_exit |
Caption |
Exit |
||
Accelerator |
E |
||
ListBox |
Список цветов |
Name |
theColors |
Frame |
Рамка для переключателей |
Name |
Frame1 |
Caption |
Indicator |
||
OptionButton |
Отсчет вперед от текущего времени до времени останова |
Name |
Count_Up |
OptionButton |
Отсчет назад от времени останова до времени запуска формы |
Name |
Count_Down |
Вызываемая форма с электронными часами |
|||
UserForm |
Форма |
Name |
ew |
Caption |
Electronic Watch |
||
Label |
Поясняющий текст |
Name |
Label1 |
Caption |
Enter second from 1 to 10 and click Start |
||
Label |
Элемент для высвечивания времени |
Name |
watch |
Caption |
(пустая строка) |
||
Font |
Жирное начертание, размер 16 |
||
TextBox |
Поле для ввода числа секунд |
Name |
sec |
ToggleButton |
Установка порядка отсчета времени назад |
Name |
left_but |
Рисунок на кнопке |
Picture |
Из файла left_arrow_normal папки Program Files\Common Files\Roxio Shared\Tutorial\Graphics |
|
Высота кнопки |
Height |
29,5 |
|
Ширина кнопки |
Width |
29,5 |
|
ToggleButton |
Установка порядка отсчета времени вперед |
Name |
right_but |
Рисунок на кнопке |
Picture |
Из файла right_arrow_normal папки Program Files\Common Files\Roxio Shared\Tutorial\Graphics |
|
Высота кнопки |
Height |
29,5 |
|
Ширина кнопки |
Width |
29,5 |
|
CommandButton |
Пуск электронных часов |
Name |
cmd_Go |
Caption |
Start |
||
Accelerator |
S |
||
CommandButton |
Изменение установок пользователя |
Name |
cmd_new_select |
Caption |
New_Select |
||
Accelerator |
N |