- •Объект Debug и его методы
- •Метод Print
- •Метод Assert
- •Доказательство правильности программ
- •Условная компиляция и отладка
- •Директива #const
- •#If … Then … #Else директива
- •Ошибки периода выполнения и их обработка
- •Модель управления ошибками в языке vba.
- •Оператор On Error
- •Оператор Resume
- •Объект Err
- •Метод Clear
- •Метод Raise
- •Класс и обработка ошибок
- •Обработчики ошибок и вложенные вызовы процедур
- •Структура обработчика ошибок
- •Функция CvErr
- •Оптимизация программ
- •Приемы оптимизации кода
- •Объявление переменных
- •Математические операции
- •Строковые операции
- •Проектирование интерфейса. Меню
- •Общие объекты Office 2000
- •Коллекция CommandBars
- •Свойства и методы коллекции CommandBars
- •Свойства и методы объекта CommandBar
- •Коллекция CommandBarControls и ее элементы
- •О роли интерфейса
- •Создание собственных и модификация встроенных меню
- •Немного терминологии
- •Возможности настройки и изменения системы меню
- •Создание собственного головного меню
- •Использование диалогового окна Настройка
- •Создание меню с помощью vba
- •Добавление выпадающих меню
- •Использование диалогового окна Настройка
- •Как добавить встроенное меню
- •Добавление выпадающего меню с помощью vba
- •Добавление подменю
- •Вставка и группировка команд
- •Добавление встроенной команды с помощью окна Настройка
- •Добавление собственной команды с помощью окна Настройка
- •Добавление команд с помощью vba
- •Пример построения документа с собственным меню
- •Группировка команд меню
- •Удаление команд меню
- •Удаление команды с помощью окна Настройка
- •Удаление команды с помощью vba
- •Как восстановить удаленные встроенные компоненты меню
- •Изменение меню во время работы программы
- •Вывод собственной панели меню
- •Динамическое изменение видимости команд меню
- •Управление доступом к командам меню
- •Переименование команды меню
- •Диалоговые окна и элементы управления
- •Общие сведения и применение
- •Встроенные диалоговые окна Коллекция Dialogs и объект Dialog
- •Вывод сообщений. Функция MsgBox
- •Окно ввода данных. Функция InputBox
- •Создание пользовательских диалоговых окон
- •Создание страниц и вкладок в диалоговых окнах
- •Добавление дополнительных элементов управления
- •Пример создания диалогового окна
- •Разработка процедур, обрабатывающих события диалогового окна и его устройств
- •Вызов собственного диалогового окна
- •Установка начальных значений свойств элементов управления
- •Использование Me в качестве имени текущего диалогового окна
- •Модификация управляющих элементов во время работы
- •Управление доступом к элементу
- •Перемещение фокуса на элемент управления
- •Изменение размеров диалогового окна
- •Проверка корректности данных
- •Обмен данными с диалоговым окном
- •Закрытие диалогового окна
- •Объект UserForm (диалоговое окно), коллекция UserForms (диалоговые окна)
- •Коллекция Controls
- •Объекты - элементы управления Перечень основных элементов управления
- •Общие свойства элементов управления Объект-родитель
- •Имя объекта
- •Значение объекта
- •Расположение объекта
- •Параметры внешнего вида объекта
- •Свойства поведения объекта
- •Другие свойства
- •CheckBox - флажок (кнопка выбора)
- •ComboBox - комбинированный список
- •CommandButton - командная кнопка
- •Frame - рамка (группы)
- •Image - изображение
- •Label - метка (надпись, статический текст)
- •ListBox - список
- •MultiPage - набор страниц
- •OptionButton - кнопка-переключатель
- •ScrollBar - полоса прокрутки
- •SpinButton - счетчик
- •TabStrip - полоса вкладок
- •TextBox - поле ввода (окно редактирования)
- •ToggleButton - выключатель
- •Объект DataObject
- •Перемещение объектов. Как реализовать технику DragAndDrop
- •События Событие AddControl (добавился элемент)
- •Событие AfterUpdate (После модификации)
- •Событие BeforeDragOver (Перед завершением перетаскивания)
- •Событие BeforeDropOrPaste (Перед опусканием или вставкой)
- •Событие BeforeUpdate (Перед модификацией)
- •Событие Change (Изменение)
- •Событие Click (Щелчок)
- •Событие DblClick (Двойной щелчок)
- •Событие DropButtonClick (Щелчок кнопки списка)
- •События Enter, Exit (Вход, Выход)
- •Событие Error (Ошибка)
- •События KeyDown, KeyUp (Клавиша нажата, Клавиша отпущена)
- •Событие KeyPress (Клавиша нажата)
- •Событие Layout (Расположение)
- •События MouseDown, MouseUp (Мышь нажата, Мышь отпущена)
- •Событие MouseMove (Мышь движется)
- •Событие RemoveControl (Удаление элемента)
- •Событие Scroll (Прокрутка)
- •События SpinDown (Уменьшить счетчик), SpinUp (Увеличить счетчик)
- •Событие Zoom (Расширение)
- •Методы Метод Add (Добавить)
- •Метод AddItem (Добавить элемент)
- •Метод Clear (Очистить)
- •Метод Copy (Копировать)
- •Метод Cut (Вырезать)
- •Метод DropDown (Вывести список)
- •Метод Move (Сдвинуть)
- •Метод Paste (Вставить)
- •Реализация операций Cut, Copy, Paste в диалоговых окнах
- •Метод RedoAction (Повторить действие)
- •Метод Remove (Удалить)
- •Метод RemoveItem (Удалить элемент)
- •Метод Repaint (Перерисовать)
- •Метод Scroll (Прокрутить)
- •Метод SetDefaultTabOrder (Установить стандартный порядок обхода)
- •Метод SetFocus (Установить фокус)
- •Метод UndoAction (Отменить действие)
- •Реализация операций Undo и Redo в диалоговых окнах
- •Метод zOrder (z-упорядочить)
- •Основные виды файлов в Office 2000
- •Открытие и создание файлов
- •Закрытие файлов
- •Запись в файлы последовательного доступа
- •Чтение файлов последовательного доступа
- •Ввод-вывод для файлов произвольного доступа и бинарных файлов
- •Работа с данными переменной длины
- •Один пример работы с Binary файлом
События SpinDown (Уменьшить счетчик), SpinUp (Увеличить счетчик)
Событие SpinDown возникает, когда пользователь щелкает кнопку счетчика "стрелка-вниз" для вертикального счетчика или "стрелка-влево" для горизонтального счетчика. Оно уменьшает значение счетчика. Событие SpinUp возникает, когда выбираются кнопки-стрелки "вверх" или "вправо". Это событие связано с увеличением значения счетчика.
Процедуры обработки этих событий не имеют аргументов:
Private Sub объект_SpinDown (),
Private Sub объект_SpinUp ().
Событие Zoom (Расширение)
Возникает при изменении свойства Zoom у диалогового окна или элементов рамка и набор страниц.
Заголовок процедуры обработки события Zoom для набора страниц имеет вид:
Private Sub объект_Zoom (индекс As Long, Процент As Integer)
а для рамки:
Private Sub объект_Zoom (Percent As Integer)
Здесь объект - имя объекта, которому принадлежит процедура, index - индекс страницы, которая изменяет размер, а Percent (Процент) - задает размер растяжения или сжатия в процентах. Его возможные значения лежат в диапазоне от 10% до 400%. Если значения меньше 100, размер диалогового окна уменьшается, больше 100 - увеличивается. В процедуре можно задать величину этого параметра.
В следующем примере при расширении окна в него добавляется полоса прокрутки, а при уменьшении - она убирается.
Private Sub UserForm_Zoom (Proc As Integer)
Dim NewSize As Double
If Proc >= 100 Then ' увеличение размера
ScrollBars = fmScrollBarsBoth ' создать полосы прокрутки
ScrollLeft = 0
ScrollTop = 0
NewSize = Width * Proc / 100
ScrollWidth = NewSize ' ширина полосы прокрутки
NewSize = Height * Proc / 100
ScrollHeight = NewSize ' высота полосы прокрутки
Else ' уменьшение размера
ScrollBars = fmScrollBarsNone ' скрыть полосу прокрутки
ScrollLeft = 0
ScrollTop = 0
End If
End Sub
Методы Метод Add (Добавить)
Позволяет добавить элемент управления во время исполнения программы. С его помощью можно добавить страницу в набор страниц, вкладку в полосу вкладок или любой элемент управления на страницу или диалоговое окно.
Вызов метода Add для вставки страницы или вкладки имеет вид:
Set Object = объект. Add ([Name [, Caption [, index]]])
Для добавления элемента управления к диалоговому окну или странице используется присвоение:
Set Control = объект. Add (ProgID [, Name [, Visible]])
Здесь объект - имя объекта (коллекции), к которому добавляется элемент, Name - задает имя (свойство Name) добавляемого объекта (если его нет, система присвоит добавленному элементу стандартное имя), Caption - задает заголовок страницы или вкладки, появляющийся на закладке, index - указывает положение страницы или вкладки в коллекциях Pages или Tabs, соответственно. ProgID - программный идентификатор добавляемого элемента, который представляет собой строку символов (без пробелов), идентифицирующую класс объектов. У этой строки структура обычно такова: <Поставщик>. <Компонента>. <Версия>. Программный идентификатор ProgID отображается на идентификатор класса (CLSID), т. е. на уникальный идентификатор (UUID), регистрируемый в системном реестре Windows. Необязательный булев параметр Visible указывает, виден ли объект на экране. По умолчанию он равен True (объект виден).
Вот значения программного идентификатора ProgID для стандартных элементов управления:
флажок |
Forms. CheckBox. 1 |
комбинированный список |
Forms. ComboBox. 1 |
командная кнопка |
Forms. CommandButton. 1 |
рамка |
Forms. Frame. 1 |
изображение |
Forms. Image. 1 |
метка |
Forms. Label. 1 |
список |
Forms. ListBox. 1 |
набор страниц |
Forms. MultiPage. 1 |
переключатель |
Forms. OptionButton. 1 |
полоса прокрутки |
Forms. ScrollBar. 1 |
счетчик |
Forms. SpinButton. 1 |
полоса вкладок |
Forms. TabStrip. 1 |
поле ввода |
Forms. TextBox. 1 |
выключатель |
Forms. ToggleButton. 1 |
Метод Add возвращает объект Page при вставке страницы в набор страниц и объект Tab при вставке вкладки в полосу вкладок. В остальных случаях он возвращает объект из класса, определяемого значением ProgID. После добавления элемента управления возбуждается событие AddControl.
Давайте добавим элемент управления к окну во время работы программы. Допустим, диалоговое окно InsertElem содержит командную кнопку cmbNewCtrl "Добавить элемент" и группу из двух переключателей: Opb1 "поле ввода" и Opb2 "список":
Рис. 13. 8. Окно перед добавлением элемента
При выборе кнопки в окно будет вставляться в зависимости от того, какой из переключателей включен, либо два поля ввода с именами Text1 и Text2, первое из которых содержит приглашение "Введите имя", либо новый список NewList со списком имен.
Dim NewCtrl As Control
Dim Inserted As Boolean
Private Sub UserForm_Initialize ()
Inserted = False
Opb1. Value = True
End Sub
Private Sub CommandButton1_Click ()
If Inserted = False Then
If Opb1. Value = True Then ' выбрано поле ввода
' добавляем 2 поля ввода
Set NewCtrl = Controls. Add ("Forms. TextBox. 1", "Text1")
NewCtrl. Left = 96
NewCtrl. Top = 12
NewCtrl. Width = 80
NewCtrl. Height = 20
NewCtrl. Text = "Введите имя"
Set NewCtrl = Controls. Add ("Forms. TextBox. 1", "Text2")
Controls ("Text2"). Left = 96
Controls ("Text2"). Top = 50
Controls ("Text2"). Width = 80
Controls ("Text2"). Height = 20
Else ' добавляем список
Set NewCtrl = Controls. Add ("Forms. ListBox. 1", "NewList")
NewCtrl. Left = 96
NewCtrl. Top = 12
NewCtrl. Width = 80
NewCtrl. Height = 70
NewCtrl. AddItem ("Анна")
NewCtrl. AddItem ("Елена")
NewCtrl. AddItem ("Ирина")
NewCtrl. AddItem ("Мария")
End If
Inserted = True
Else: MsgBox ("Элемент уже добавлен!" & vbCrLf & "Второй добавить не могу!")
End If
End Sub
Пример 13.1. (html, txt)
Вот результаты выбора командной кнопки при разных значениях переключателей:
увеличить изображение Рис. 13. 9. Результаты вставки элементов