Этапы разработки приложения 1. Определение потребностей пользователя – постановка задачи. 2. Проектирование приложения, удовлетворяющего заданным условиям. 3. Разработка интерфейса. 4. Разработка приложения. 5. Тестирование и отладка. 6. Разработка документации и справочной системы. 7. Установка приложения. 8. Обновление приложения в случае необходимости.
Проектированиеприложения Проектирование приложения Файловая структура. Структура данных. Формулы или VBA? Надстройка или файл рабочей книги. Обработка ошибок. Использование специальных возможностей. Вопросы производительности. Уровень безопасности.
Разработка интерфейса Использование элементов ленты. Использование контекстных меню, которые могут быть изменены с помощью VBA. Использование комбинаций клавиш. Использование пользовательских диалоговых форм. Размещение элементов управления непосредственно на рабочем листе.
Разработка интерфейса Добивайтесь единообразия. Выбирайте простые решения. Разбивайте окна ввода. Не переусердствуйте с цветом. Отслеживайте шрифты и графику.
Свойства Свойство – это характеристика объекта. Name – свойство представляет собой строку, содер- жащую имя рабочей книги, например, Книга1.xlsx. FullName – свойство представляет собой строку, содержащую полный путь и имя рабочей книги, например, D:\Документы\Книга1.xlsx. Date1904 – логическое свойство, значение которого равно True, если рабочая книга использует систему дат 1904 года, и значение False в противном случае. ActiveSheet – свойство, определяющее активный рабочий лист книги. Является ссылкой на объект Worksheet – рабочий лист.
Методы Метод определяет действие, выполняемое над объектом. Close – закрытие рабочей книги. Save – сохранение рабочей книги. SaveAs – сохранение рабочей с другим именем или в другом формате. Protect – защита рабочей книги. Unprotect – отмена защиты рабочей книги.
События Событие – изменение в состоянии объекта. Open – событие, которое происходит при открытии рабочей книги. NewSheet – событие, которое происхо- дит при добавлении нового листа в рабочую книгу. SheetChange – событие, которое проис- ходит при изменении ячейки любого листа рабочей книги.
Иерархия коллекций и объектов Application Workbooks Workbook Charts -Chart -Axes -Hyperlinks -Shapes Names Sheets Styles Windows
Worksheets -Worksheet -ChartObject -Cells -Comments -Hyperlinks -Names -Shapes Charts Dialogs Names RecentFiles Sheets Windows Worksheets
Примеры работы с объектами VBA Application.Undo Application.Wait "12:00:00" Application.Wait Now + TimeValue("0:00:10") Application.Workbooks.Item(1).Close Application.Workbooks.Item("Книга1.xlsm").Worksheets. Item("Лист2").Activate Application.Workbooks.Item("Книга1.xlsm").Worksheets. Item("Лист2").Cells(1, 1).Value = 7 Workbooks(1).Close Workbooks("Книга1.xlsm").Worksheets("Лист2").Activate Workbooks("Книга1.xlsm").Worksheets("Лист2").Cells(1, 1). Value = 7
Некоторые полезные свойства объекта Application СвойствоВозвращаемый объект ActiveWindowАктивное окно ActiveWorkbookАктивная рабочая книга ActiveSheetАктивный лист (рабочий лист или лист диаграммы) ActiveChartАктивный лист диаграммы или объект диаграммы, если такого листа или диаграммы нет, то свойство равно Nothing ActiveCellАктивная ячейка SelectionВыделенный объект – Range, ChartObject, Shape и т.д. ThisWorkbookРабочая книга, содержащая выполняемую процедуру VBA
Примеры ActiveCell.Value = 1 ActiveCell.ClearContents MsgBox ActiveSheet.Name Selection.Value = -5
Задание диапазона Range("B5").Select Range("A1:D10").Select Range("A1", "D10").Select Range("A1:B2", "D10:G12").Select Range("A:D").Select Range("1:10").Select Range("A:D 1:10").Select Range("A1,D10").Select
Свойства объекта Range СвойствоОписание AddressВозвращает строку, содержащую ссылку на диапазон CellsПозволяет выделить ячейку диапазона по относительному номеру строки и номеру столбца ColumnsВозвращает объект Range, представляющий столбцы диапазона ColumnsWidthВозвращает или устанавливает ширину столбцов диапазона CountВозвращает количество объектов в коллекции FormulaВозвращает или устанавливает формулу ячейки в формате A1 FormulaLocalВозвращает или устанавливает формулу ячейки в формате A1 на языке пользователя FormulaR1C1Возвращает или устанавливает формулу ячейки в формате R1C1 FormulaR1C1LocalВозвращает или устанавливает формулу ячейки в формате R1C1 на языке пользователя
Свойства объекта Range СвойствоОписание HasFormulaСвойство принимает значение True, если все ячейки диапазона содержат формулы, значение False, если ни одна ячейка не содержит формулу, и значение null в противном случае MergeCellСвойство принимает значение True, если диапазон находится внутри объединённых ячеек NameВозвращает или устанавливает имя диапазона NumberFormatВозвращает или устанавливает числовой формат для ячеек диапазона OffsetВозвращает объект Range, который смещен от текущего на указанное количество строк и столбцов RowHeightВозвращает или устанавливает высоту строк диапазона RowsВозвращает объект Range, представляющий строки диапазона ValueВозвращает или устанавливает значение для диапазона
Методы объекта Range СвойствоОписание ActivateАктивация указанной ячейки ClearОчистка диапазона (и содержимое, и формат) ClearContentsОчистка содержимого диапазона ClearFormatsОчистка формата диапазона CopyКопирование диапазона в буфер обмена или другой диапазон CreateNamesСоздание имён для диапазона на основе текстовых данных CutВырезание диапазона (в буфер обмена) или вставка диапазона в другой MergeОбъединение диапазона в одну ячейку SelectВыделение диапазона SortСортировка ячеек диапазона SpeakОзвучивание содержимого ячеек диапазона UnMergeРазделение объединённой ячейки
Примеры работы с объектом Range ActiveCell.RowHeight = 50 If Range("A1:A3").MergeCells Then MsgBox "Merged" Else MsgBox "Not merged" End If Range("A6").Clear Range("C6").ClearContents Range("E6").ClearFormats
Примеры работы с объектом Range Range("B2:D10").Cells(2, 3).Value = 66 ActiveCell.Offset(1, 0).FormulaLocal = ActiveCell.FormulaLocal ActiveCell.Offset(1, 0).FormulaR1C1 = ActiveCell.FormulaR1C1 MsgBox Range("A1:D10").Count MsgBox Range("A1:D10").Rows.Count MsgBox Range("A1:D10").Columns.Count
Параметры свойств и методов в языке VBA Range("A1:D4").Copy Destination:=Range("E5:H9") expression.CreateNames(Top, Left, Bottom, Right) Range("A1:E4").CreateNames True, False, False, False Range("A1:E4").CreateNames Left:=True
Параметры свойства Address expression.Address(RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo) ИмяТипОписание RowAbsoluteVariantЕсли значение параметра равно True (по умолчанию), возвращается абсолютная ссылка на строку. ColumnAbsoluteVariantЕсли значение параметра равно True (по умолчанию), возвращается абсолютная ссылка на столбец. ReferenceStyleXlReferenceStyleФормат ссылки – xlA1 (по умолчанию) для ссылок в формате А1, xlR1C1 – для ссылок в формате R1C1.
Параметры свойства Address expression.Address(RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo) ИмяТипОписание ExternalVariantЕсли значение параметра равно False (по умолчанию), возвращается локальная ссылка. В противном случае возвращается внешняя ссылка, т.е. ссылка, содержащая имя файла и имя листа. RelativeToVariantПараметр задаёт диапазон, относительно которого указывается ссылка. Имеет значение только для относительных ссылок в формате R1C1.
Примеры использования свойства Address Set mc = Worksheets("Лист1").Cells(1, 1) MsgBox mc.Address '$A$1 MsgBox mc.Address(RowAbsolute:=False) '$A1 MsgBox mc.Address(ReferenceStyle:=xlR1C1) 'R1C1
Примеры использования свойства Address MsgBox mc.Address(RowAbsolute:=False, ColumnAbsolute:=False, ReferenceStyle:=xlR1C1, _ RelativeTo:=Worksheets("Лист1").Cells(3, 3)) 'R[-2]C[-2] MsgBox mc.Address(RowAbsolute:=False, _ ColumnAbsolute:=False, External:=True) '[Книга1.xlsm]Лист1!A1