
- •Объект 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 файлом
События KeyDown, KeyUp (Клавиша нажата, Клавиша отпущена)
Событие KeyDown возникает, когда пользователь нажимает клавишу на клавиатуре, а событие KeyUp, - когда отпускает. Пока клавиша нажата, чередуются события KeyDown и KeyPress. Сообщения о нажатии клавиш получает диалоговое окно или элемент управления, находящиеся в фокусе. При этом диалоговое окно может находиться в фокусе, только если в нем нет элементов управления либо все они отключены ("серые"). Эти события появляются и при посылке в диалоговое окно кодов символов из макроса с помощью операции SendKeys или из программы VBA оператором SendKeys. Если посланный символ приводит к перемещению фокуса от одного элемента к другому, событие KeyDown происходит для первого из них, а события KeyPress и KeyUp - для второго.
События KeyDown и KeyUp не возникают при нажатии клавиш, если нажата клавиша:
-
- Enter, а в диалоговом окне есть командная кнопка со свойством Default, равным True;
-
- Esc, а в диалоговом окне есть кнопка, для которой свойство Cancel равно True.
Заголовки процедур обработки этих событий выглядят так:
Private Sub объект_KeyDown (ByVal KeyCode As MSForms.
ReturnInteger, ByVal Shift As fmShiftState)
Private Sub объект_KeyUp (ByVal KeyCode As MSForms.
ReturnInteger, ByVal Shift As fmShiftState)
Здесь объект - имя объекта, которому принадлежит процедура, KeyCode - число, являющееся кодом нажатой или отпущенной клавиши. Параметр Shift задает состояние клавиш Shift, Ctrl и Alt. Его возможные значения: fmShiftMask = 1 - нажата клавиша Shift, fmCtrlMask = 2 - нажата клавиша Ctrl, fmAltMask = 4 - нажата клавиша Alt.
Типичные примеры использования событий KeyDown и KeyUp связаны с обработкой нажатий дополнительных (не буквенных) клавиш: функциональных, клавиш-стрелок, Home, End, Pageup, Pagedown и Tab, цифровых. Они позволяют отреагировать также на нажатие комбинаций, состоящих из клавиши стандартной клавиатуры и одной из дополнительных клавиш-модификаторов (Shift, Ctrl или Alt). Для работы же со стандартными символами ANSI удобней использовать событие KeyPress.
Событие KeyPress (Клавиша нажата)
Возникает, когда пользователь нажимает клавишу с печатаемым символом (ANSI-клавишу). Это событие обычно происходит между нажатием и отпуском нажатой клавиши. Оно также появляется при посылке ANSI-кода в диалоговое окно из макроса с помощью операции SendKeys или из программы VBA оператором SendKeys. Точнее, событие KeyPress возникает при нажатии клавиш:
-
любого печатаемого символа;
-
Ctrl+символ стандартного алфавита;
-
Ctrl+ любой специальный символ;
-
Backspace;
-
Esc.
Событие KeyPress не возникает:
-
при нажатии клавиш Tab, Del или Enter;
-
при нажатии клавиш-стрелок;
-
когда при нажатии клавиши перемещается фокус.
Пока нажата ANSI-клавиша, чередуются события KeyDown и KeyPress. Когда пользователь отпускает эту клавишу, инициируется событие KeyUp. Сообщения о нажатии клавиш получает диалоговое окно или элемент управления, находящиеся в фокусе. При этом диалоговое окно может находиться в фокусе, только если в нем нет элементов управления либо все они отключены.
Заголовки процедур обработки этих событий выглядят так:
Private Sub объект_KeyPress (ByVal KeyANSI As MSForms. ReturnInteger)
Здесь объект - имя объекта, которому принадлежит процедура, KeyANSI - число, являющееся стандартным ANSI-кодом нажатой клавиши.
В процедуре обработки события KeyPress можно задать реакцию системы на нажатие пользователем стандартных клавиш или отмеченных выше комбинаций, имеющих код ANSI. Нажатия других клавиш или комбинаций следует обрабатывать процедурами для событий KeyDown и KeyUp.