- •3 Семестр
- •Оглавление
- •Язык программирования Visual Basic for Application Основные средства и возможности vba Основные элементы vba
- •Основы программирования на vba Типы данных
- •Описание переменных
- •Допустимые имена
- •Инструкция Def Тип
- •Массивы
- •Динамические массивы
- •Функции и процедуры для работы с массивами
- •Константы
- •Тип данных, определенный пользователем
- •Операции vba
- •Приоритеты операций
- •Встроенные функции vba
- •Математические функции
- •Функции проверки типов
- •Функции преобразования форматов
- •Функции обработки строк
- •Функции времени и даты
- •Функции выбора
- •Функции, возвращающие строки
- •Встроенные диалоговые окна
- •Инструкции vba
- •Оператор присвоения
- •Перенос строки
- •Комментарии
- •Расположение нескольких операторов на одной строке
- •Операторы перехода и выбора
- •Операторы повтора
- •Условная компиляция
- •Процедура
- •Переход в подпрограмму и возвращение из подпрограммы
- •Вызов процедуры
- •Рекурсивные процедуры
- •Область определения переменной
- •Время жизни переменной
- •Процедуры обработки ошибок и отладка программ Разработка процедур, предотвращающих появление ошибок
- •Перехват и обработка ошибок
- •Свойства объекта Err
- •Методы объекта Err
- •Отладка программ
- •Ошибки компиляции
- •Ошибки выполнения
- •Логические ошибки
- •Инструкция Option Explicit
- •Пошаговое выполнение программ
- •Точка останова
- •Вывод значений свойств и переменных
- •Работа с файлами Типы файлов в vba
- •Открытие и закрытие файла
- •Ввод данных в файл последовательного доступа
- •Вывод данных из файла последовательного доступа
- •Работа с файлом произвольного доступа
- •Наиболее употребляемые инструкции и функции при работе с файлами
- •Объект FileSearch
- •Элементы управления и пользовательская форма Элементы управления
- •Режим конструктора
- •Установка свойств элемента управления
- •Редактор кода
- •Пользовательская форма UserForm
- •Семейство Controls
- •Создание пользовательской формы
- •Общие свойства элементов управления
- •Соглашения об именах
- •Общие методы и события элементов управления
- •Объект DataObject
- •Надпись
- •Заполнение списка
- •Выбор нескольких элементов из списка
- •Поле со списком
- •Полоса прокрутки и счетчик
- •Переключатель
- •Флажок и выключатель
- •Ссылки на ячейки и диапазоны
- •Набор страниц
- •Набор вкладок
- •Дополнительные элементы управления
- •Последовательность выбора элементов управления
- •Инициализация и отображение диалогового окна
- •Закрытие диалогового окна
- •Отображение встроенных диалоговых окон
- •Открытие документа
- •Объект Application
- •Свойства объекта Application
- •Методы объекта Application
- •События объекта Application
- •Объект Workbook и семейство Workbooks
- •Свойства объекта Workbook и семейства Workbooks
- •Методы объекта Workbook и семейства Workbooks
- •События объекта Workbook и семейства Workbooks
- •Объект Worksheet и семейство Worksheets
- •Свойства объекта Worksheet и семейства Worksheets
- •Методы объекта Worksheet и семейства Worksheet
- •События объекта Worksheet
- •Объекты Range и Selection
- •Адресация ячеек
- •Задание групп строк и столбцов с помощью объекта Range
- •Связь объекта Range и свойства Cells
- •Свойства и методы объекта Range
- •Программирование панели инструментов
- •Объект CommandBar и семейство CommandBars
- •Семейство CommandBarControls и объект CommandBarControl
- •Пример создания панели инструментов пользователя
- •Пример создания строки меню пользователя
- •Создание пользовательской панели инструментов вручную
- •Удаление элемента управления из панели инструментов вручную
- •Удаление пользовательской панели инструментов вручную
- •Назначение вручную макроса кнопке
- •Изменение и создание вручную изображения на кнопке
- •Программирование средств для работы со справочной информацией
- •Структура помощника
- •Типы помощника
- •Свойства объекта Assistant
- •Объект Balloon
Пример создания панели инструментов пользователя
Приведем пример проекта, который создает интерфейс приложения, состоящего из строки меню и одной панели инструментов. В панель инструментов входят две кнопки и раскрывающийся список. На поверхности одной из кнопок выводится рисунок, а другой — надпись (рис. 8.2).
Рис. 8.2. Пользовательский интерфейс
Каждая из кнопок связана с макросом таким образом, что их активизация приводит к выполнению соответствующего макроса. Кроме того, эти кнопки снабжены пояснительными надписями, которые отображаются в окне всплывающей подсказки. При закрытии приложения данная панель инструментов удаляется, а ее место занимают панели инструментов Стандартная (Standard) и Форматирование (Formatting).
В окне Проект — VBAProject (Project - VBAProject) выберите лист ThisWorkbook и наберите следующие две процедуры.
Private Sub Workbook_WindowActivate(ByVal Wn As Excel.Window)
'
' Процедура создания новой панели инструментов при
' открытии рабочей книги
'
' При открытии рабочей книги панели инструментов Форматирование
' и Стандартная скрываются
'
'
With Application
.CommandBars("Formatting").Visible = False
.CommandBars("Standard").Visible = False End With
' Создание новой панели инструментов с именем
' МояПанельИнструментов, которая будет
' удаляться при закрытии приложения
'
With Application.CommandBars
.Add(Name:="МояПанельИнструментов",
Position:=msoBarTop, MenuBar:=False, Temporary:=True)
.Visible = True With .Controls
' Создание кнопки с рисунком
With .Add(Type:=msoControlButton, Id:=2950)
.TooltipText = "КнопкаДейства!" .OnAction = "Действо 1"
End With
'
' Создание кнопки с надписью
With .Add(Type:=msoControlButton, Id:=l)
.Caption = "Действо"
.TooltipText = "КнопкаДейства2"
.Style = msoButtonCaption
.OnAction = "Действо 2" End With
' Создание раскрывающегося списка
With .Add(Type:=msoControlDropdown)
.Addltem "Приедет", 1 .Addltem "Уедет", 2
.Addltem "Еще не решил", 3
.Listlndex = i
End With
End With
End With
End Sub
'
Private Sub Workbook_WindowDeactivate(ByVal Wn As Excel.Window)
' Процедура, отображающая панели инструментов Форматирование
' ' и Стандартная при закрытии приложения
'
With Application
.CommandBars("Formatting").Visible = True
.CommandBars("Standard").Visible = True
End With
End Sub
А на листе модуля введите следующие две процедуры, которые будут выполняться при нажатии на соответствующие кнопки.
Sub Действо1()
MsgBox "Результат действа 1"
End Sub
Sub Действо 2()
MsgBox " Результат действа 2"
End Sub
Пример создания строки меню пользователя
Приведем пример проекта, который создает интерфейс приложения, состоящего из пользовательской строки меню. Пользовательская строка меню включает два пункта меню, причем первый пункт содержит в себе также раскрывающееся меню (рис. 8.3). Каждый пункт связан с макросом так, что при их выборе выполняется -соответствующий макрос. При закрытии приложения пользовательская строка меню удаляется.
Рис. 8.3. Интерфейс с пользовательской строкой меню
В окне Проект — VBA Project (Project - VBAProject) выберите лист Thisworkbook и введите на нем следующие две процедуры.
Private Sub Workbook_WindowActivate(ByVal Wn As Excel.Window)
'
' Процедура создания новой строки меню при
' открытии рабочей книги. При закрытии приложения
' подданная строка удаттететея
'
With Application.CoimnandBars.Add(Name:="МоеМеню", MenuBar:=True, Temporary:=True) .Visible = True
With .Controls
'
' Создание меню Меню!
'
With .Add(Type:=msoControlPopup)
.Caption = "&Меню1" With .Controls
With .Add (Type :=msoControlButtoj»)
.Caption = "Пункт&1" .OnAction = "АтьДва!"
End With
'
' Создание подменю Меню1
With -Add(Type:=msoControlPopup)
.Caption = "&ПодМеню1" With
.Controls
With .Add(Type:=msoControlButton)
.Caption = "Пункт&2" .OnAction = "АтьДва2"
End With
With .Add(Type:=msoControlButton)
.Caption = "Пункт&З"
.OnAction = "АтьДваЗ"
End With
End With
End With
End With
End With
'
' Создание меню Меню2
'
With .Add(Type:=msoControlPopup)
.Caption = "&Меню2" With .Controls
With .Add(Type:=msoControlButton)
.Caption = "Пункт&4"
.OnAction = "АтьДва4"
End With
End With
End With
End With
End With
End Sub
А на листе модуля введите следующие четыре процедуры, которые будут выполняться при выборе соответствующего пункта меню.
Sub АтьДва!()
MsgBox "Стой! Стоять! Буду стрелять!"
' End Sub
'
Sub АтьДва2 ()
MsgBox "Стой! Стоять! Стреляю в воздух!"
End Sub
Sub АтьДваЗ()
MsgBox "Стой! Стоять! Последний раз стреляю в воздух!"
End Sub
'
Sub АтьДва4()
MsgBox "Стой! Стоять! Стреляю!"
End Sub