- •Об авторе
- •Введение
- •Глава 1. Excel 2010: история программы
- •Краткая история электронных таблиц
- •Все начиналось с VisiCalc
- •Quattro Pro
- •Microsoft Excel
- •Почему программа Excel так удобна разработчикам
- •Место Excel в стратегии Microsoft
- •Объектное мышление
- •Рабочие книги
- •Рабочие листы
- •Листы диаграмм
- •Листы макросов XLM
- •Пользовательский интерфейс Excel
- •Ввод данных
- •Формулы, функции и имена
- •Выделение объектов
- •Форматирование
- •Глава 3. Особенности формул
- •О формулах
- •Вычисление формул
- •Ссылки на ячейки и диапазоны
- •Зачем нужны неотносительные ссылки
- •Ссылки на другие листы или рабочие книги
- •Применение имен к существующим ссылкам
- •Пересечение имен
- •Присвоение имен столбцам и строкам
- •Определение области действия
- •Присвоение имен константам
- •Присвоение имен объектам
- •Ошибки в формулах Excel
- •Формулы массивов
- •Пример формулы массива
- •Создание календаря с помощью формулы массива
- •Достоинства и недостатки формул массивов
- •Примеры формул суммирования
- •Другие инструменты подсчета
- •Работа со значениями даты и времени
- •Использование дат до 1900 года
- •Создание мегаформул
- •Глава 4. Файлы Excel
- •Запуск Excel
- •Типы файлов
- •Форматы файлов Excel
- •Форматы текстовых файлов
- •Форматы файлов баз данных
- •Другие форматы файлов
- •Создание шаблонов
- •Создание шаблонов рабочих книг
- •Файл XLB
- •Файлы надстроек
- •Настройки Excel
- •Глава 5. Приложения электронных таблиц
- •О приложениях электронных таблиц
- •Разработчик и конечный пользователь
- •Кто такие разработчики и чем они занимаются
- •Классификация пользователей электронных таблиц
- •Для кого предназначены приложения электронных таблиц
- •Решение проблем с помощью Excel
- •Основные типы электронных таблиц
- •Однопользовательские приложения
- •Приложения-утилиты
- •Надстройки с функциями рабочих листов
- •Одноблоковые бюджеты
- •Электронные таблицы для хранения данных и доступа к ним
- •Клиентские приложения баз данных
- •Глава 6. Принципы разработки приложений электронных таблиц
- •Этапы разработки приложения
- •Определение потребностей пользователя
- •Проектирование приложения с учетом потребностей пользователя
- •Определение удобного пользовательского интерфейса
- •Работа с конечным пользователем
- •Тестирование приложения
- •Создание привлекательных и интуитивно понятных приложений
- •Документирование усилий, затраченных на разработку
- •Распространение приложения среди пользователей
- •Обновление приложения
- •Другие вопросы разработки приложений
- •Версия Excel, установленная у пользователя
- •Трудности, касающиеся поддержки языка
- •Видеорежимы
- •Глава 7. Введение в VBA
- •Основы языка BASIC
- •Обзор VBA
- •Объектные модели
- •Сравнение VBA и XLM
- •Основы VBA
- •Работа с Project Explorer
- •Добавление нового модуля VBA
- •Удаление модуля VBA
- •Экспорт и импорт объектов
- •Работа с окнами кода
- •Сворачивание и восстановление окон
- •Сохранение кода VBA
- •Ввод кода VBA
- •Настройка среды VBE
- •Что записывается
- •Параметры записи
- •Улучшение записанных макросов
- •Об объектах и коллекциях
- •Иерархия объектов
- •О коллекциях
- •Ссылки на объекты
- •Свойства и методы
- •Свойства объекта
- •Методы объекта
- •Свойства объекта Comment
- •Методы объекта Comment
- •Коллекция Comments
- •Работа с объектами Range
- •Свойство Range
- •Свойство Offset
- •Что следует знать об объектах
- •Важные концепции для запоминания
- •Узнайте больше об объектах и свойствах
- •Обзор элементов и конструкций VBA
- •Комментарии
- •Переменные, типы данных и константы
- •Определение типов данных
- •Объявление переменных
- •Работа с константами
- •Операторы присваивания
- •Массивы
- •Объявление массивов
- •Объявление многомерных массивов
- •Объявление динамических массивов
- •Объектные переменные
- •Пользовательские типы данных
- •Встроенные функции
- •Управление объектами и коллекциями
- •Конструкция With - End With
- •Конструкция For Each - Next
- •Контроль за выполнением кода
- •Конструкция Select Case
- •Циклическая обработка инструкций
- •Глава 9. Работа с процедурами VBA
- •О процедурах
- •Объявление процедуры Sub
- •Область действия процедуры
- •Выполнение процедуры
- •Выполнение процедуры с помощью ленты
- •Выполнение процедуры из пользовательского контекстного меню
- •Выполнение процедуры из другой процедуры
- •Выполнение процедуры по щелчку на объекте
- •Выполнение процедуры по событию
- •Выполнение процедуры в окне отладки
- •Передача аргументов процедурам
- •Обработка ошибок
- •Перехват ошибок
- •Реальный пример
- •Цель
- •Требования к проекту
- •Исходные данные
- •Подход
- •Что необходимо знать
- •Написание кода
- •Создание процедуры сортировки
- •Устранение проблем
- •Доступность
- •Глава 10. Создание функций
- •Процедуры и функции
- •Назначение пользовательских функций
- •Простой пример функции
- •Анализ пользовательской функции
- •Синтаксис функции
- •Область действия функции
- •Аргументы функций
- •Примеры функций
- •Функции без аргументов
- •Функция с одним аргументом
- •Функция с двумя аргументами
- •Функция с аргументом в виде массива
- •Функция с необязательными аргументами
- •Функция VBA, возвращающая массив
- •Функция с неопределенным количеством аргументов
- •Расширенные функции для работы с датами
- •Отладка функций
- •Определение категории функции
- •Использование надстроек для хранения пользовательских функций
- •Использование функций Windows API
- •Примеры функций Windows API
- •Определение папки Windows
- •Определение состояния клавиши <Shift>
- •Дополнительная информация о функциях Windows API
- •Учимся на примерах
- •Работа с диапазонами
- •Копирование диапазона
- •Перемещение диапазона
- •Подсчет выделенных ячеек
- •Определение типа выделенного диапазона
- •Удаление всех пустых строк
- •Дублирование строк
- •Чтение и запись диапазонов
- •Перенесение одномерных массивов
- •Перенесение диапазона в массив типа Variant
- •Выбор ячеек по значению
- •Копирование несмежных диапазонов
- •Управление рабочими книгами и листами
- •Сохранение всех рабочих книг
- •Синхронизация рабочих книг
- •Методы программирования на VBA
- •Переключение значения булева свойства
- •Определение количества страниц для печати
- •Отображение списка шрифтов
- •Обработка последовательности файлов
- •Полезные функции для программ VBA
- •Функция FileExists
- •Функция FileNameOnly
- •Функция PathExists
- •Функция RangeNameExists
- •Функция SheetExists
- •Получение значения из закрытой рабочей книги
- •Полезные функции в формулах Excel
- •Получение информации о форматировании ячейки
- •Беседа с рабочим листом
- •Отображение даты сохранения файла или вывода файла на печать
- •Основы иерархии объектов
- •Подсчет количества ячеек между двумя значениями
- •Соответствует ли строка шаблону
- •Возвращение из строки n-го элемента
- •Возвращение максимального значения всех рабочих листов
- •Возвращение массива случайных целых чисел без повторов
- •Расположение значений диапазона в произвольном порядке
- •Определение текущего видеорежима
- •Чтение и запись параметров системного реестра
- •Глава 12. Создание собственных диалоговых окон
- •Перед созданием диалоговых окон...
- •Использование окон ввода данных
- •Функция VBA MsgBox
- •Отображение формы ввода данных с помощью VBA
- •CommandButton
- •Frame
- •Image
- •Label
- •ListBox
- •MultiPage
- •OptionButton
- •RefEdit
- •ScrollBar
- •SpinButton
- •TabStrip
- •TextBox
- •ToggleButton
- •Настройка элементов управления пользовательского диалогового окна
- •Общие свойства
- •Отображение пользовательского диалогового окна
- •Отображение немодальной формы
- •Отображение пользовательского диалогового окна на основе значения переменной
- •Загрузка пользовательского диалогового окна
- •О процедурах обработки событий
- •Закрытие пользовательского диалогового окна
- •Пример создания пользовательского диалогового окна
- •Создание пользовательской формы
- •Создание кода для отображения диалогового окна
- •Проверка правильности введенных данных
- •События объекта UserForm
- •События объекта UserForm
- •События элемента управления SpinButton
- •Ссылка на элементы управления пользовательского диалогового окна
- •Настройка панели инструментов Toolbox
- •Добавление новых страниц
- •Настройка или комбинирование элементов управления
- •Вопросы для самоконтроля
- •Создание заставки
- •Отключение кнопки закрытия пользовательского диалогового окна
- •Изменение размера диалогового окна
- •Добавление опций в элемент управления ListBox
- •Определение выделенного элемента списка
- •Определение нескольких выделенных элементов списка
- •Работа с многоколоночными элементами управления ListBox
- •Использование элемента управления ListBox для выделения строк на листе
- •Использование элемента управления ListBox для активизации листа
- •Использование внешних элементов управления
- •Глава 15. Дополнительные приемы работы с пользовательскими формами
- •Отображение индикатора текущего состояния
- •Создание мастеров
- •Программирование зависимостей
- •Выполнение задачи
- •Имитация работы функции MsgBox
- •Несколько кнопок с одной процедурой обработки событий
- •Глава 16. Разработка утилит Excel с помощью VBA
- •Об утилитах Excel
- •Создание утилит с помощью VBA
- •Признаки хорошей утилиты
- •Утилита Text Tools
- •Рабочая книга утилиты
- •Как работает утилита
- •Оценка проекта
- •Принципы работы утилиты
- •Дополнительно об утилитах Excel
- •Глава 17. Работа со сводными таблицами
- •Вводный пример
- •Просмотр созданного кода
- •Код сводной таблицы
- •Создание обратной сводной таблицы
- •Кратко о диаграммах
- •Создание внедренной диаграммы
- •Размещение диаграммы на листе диаграммы
- •Активизация диаграммы с помощью кода VBA
- •Деактивизация диаграммы
- •Определение активности диаграммы
- •Изменение размеров и выравнивание диаграмм
- •Экспорт диаграммы
- •События диаграмм
- •Поддержка событий для встроенных диаграмм
- •Тонкости создания диаграмм
- •Печать встроенных диаграмм на всю страницу
- •Отображение/сокрытие рядов данных
- •Создание фиксированной диаграммы
- •Анимирование диаграмм
- •Прокрутка диаграммы
- •Глава 19. Концепция событий Excel
- •Типы событий Excel
- •Понимание последовательности событий
- •Отключение событий
- •Ввод кода процедуры обработки события
- •События уровня объекта Workbook
- •Событие Open
- •Событие Activate
- •Событие SheetActivate
- •Событие NewSheet
- •Событие Deactivate
- •Событие BeforePrint
- •Событие Change
- •Включение событий уровня объекта Application
- •Определение факта открытия рабочей книги
- •События объекта UserForm
- •Запуск другого приложения из Excel
- •Использование функции Shell
- •Использование API-Функции ShellExecute
- •Инструкция AppActivate
- •Работа с внешними объектами
- •Раннее и позднее связывание
- •Простой пример позднего связывания
- •Использование метода SendKeys
- •Глава 21. Создание и использование надстроек
- •Определение надстройки
- •Основные причины создания надстроек
- •Создание надстройки
- •Пример надстройки
- •Установка надстройки
- •Тестирование надстройки
- •Распространение надстройки
- •Изменение надстройки
- •Членство в коллекциях
- •Получение доступа к VBA-процедурам надстройки
- •События объекта AddIn
- •Оптимизация производительности надстроек
- •Проблемы, связанные с использованием надстроек
- •Правильная установка
- •Ссылки на другие файлы
- •Указание правильной версии Excel
- •Глава 22. Работа с лентой
- •Начальные сведения о ленте
- •Активизация вкладки
- •Настройка ленты
- •Простой пример кода RibbonX
- •Некоторые замечания о настройке ленты
- •Код панели инструментов
- •Глава 23. Работа с контекстными меню
- •Обзор объекта CommandBar
- •Типы объектов CommandBar
- •Отображение контекстных меню
- •Настройка контекстных меню с помощью VBA
- •Сброс контекстных меню
- •Отключение контекстного меню
- •Отключение элементов контекстного меню
- •Добавление подменю в контекстное меню
- •Автоматическое добавление и удаление меню
- •Создание нового контекстного меню
- •Справка в приложениях Excel
- •Справочная система, созданная с помощью компонентов Excel
- •Использование примечаний к ячейке для предоставления справки
- •Использование средства HTML Help
- •Связывание файлов справочного руководства с приложением
- •Глава 25. Разработка пользовательских приложений
- •Что такое приложение, ориентированное на пользователя
- •Как это работает
- •Концепции разработки приложений
- •Концепция совместимости
- •Проблемы совместимости
- •Избегайте использования новых возможностей
- •Использование 64-разрядной версии Excel
- •Создание интернациональных приложений
- •Многоязычные приложения
- •Идентификация настроек системы
- •Параметры настройки даты и времени
- •Часто выполняемые операции с файлами
- •Управление файлами с помощью функций VBA
- •Использование объекта FileSystemObject
- •Открытие текстового файла
- •Чтение текстового файла
- •Запись в текстовый файл
- •Получение номера файла
- •Определение или установка позиции в файле
- •Примеры управления текстовыми файлами
- •Импортирование данных из текстового файла
- •Экспортирование диапазона в текстовый файл
- •Импортирование текстового файла в диапазон
- •Протоколирование операций в Excel
- •Фильтрация текстового файла
- •Экспортирование диапазона в формат HTML
- •Введение в IDE
- •Объектная модель IDE
- •Использование VBA для создания кода VBA
- •Простой пример
- •Глава 29. Модули классов
- •Определение модуля класса
- •Пример создания модуля класса
- •Дополнительные сведения о модулях классов
- •События модуля класса
- •Модуль класса CSVFileClass
- •Глава 30. Работа с цветом
- •Определение цвета
- •Цветовая модель RGB
- •Темы документа
- •Изменение цветов диаграммы
- •Списки часто задаваемых вопросов
- •Общие вопросы об Excel
- •Редактор Visual Basic
- •Процедуры
- •Функции
- •Объекты, свойства, методы и события
- •Пользовательские диалоговые окна
- •Надстройки
- •Пользовательский интерфейс
- •Справочная система Excel
- •Техническая поддержка со стороны компании Microsoft
- •Группы новостей
- •Веб-сайты
- •Сайт Йона Пелтиера
- •Системные требования
- •Использование компакт-диска
- •Файлы и программы, находящиеся на компакт-диске
- •Решение проблем
- •Предметный указатель
Глава 18. Управление диаграммами |
577 |
1 Сохранение диаграммы в формате G IF |
|
FName = T h is W o rk b o o k . P a th & A p p lic a t io n . P a th S e p a ra to r |
& _ |
te m p . g i f "
T em p C h art. E x p o rt F ile n a m e : =FName, f ilt e r N a m e : = "G IF " A c t iv e s h e e t . C h a r tO b je c ts ( 1 ) .D e le te
A p p lic a t io n . S c re e n U p d a tin g = T ru e End Sub
После завершения работы процедуры C re a te C h a rt рабочий лист будет содержать объект ChartOb j e c t с диаграммой данных на основе строки активной ячейки. Но объект C hartO bject останется невидимым, так как свойство S creen U p d atin g объекта Ap p lic a tio n отключено.
Последний оператор в процедуре ShowChart загружает диалоговое окно UserForm. Ниже приведен листинг процедуры U s e rF o rm _ In itia liz e . Эта процедура сохраняет диаграмму в виде файла GIF, удаляет объект C h a rtO b je c t и загружает файл формата GIF в элемент управления Image.
P riv a te |
Sub |
U s e r F o r m _ In it ia liz e () |
|
Dim |
FName |
As S t r in g |
|
FName = T h is W o rk b o o k . P a th & _ |
|
||
A p p lic a t io n . P a th S e p a ra to r & |
" te m p .g if" |
||
U s e rF o rm l. Im a g e l. P ic t u r e = L o a d P ic tu re (F N a m e ) |
|||
End Sub |
|
|
|
|
К о м п а к т-д и ск |
|
|
|
Рассматриваемая в этом разделе рабочая книга находится на прилагаемом |
||
|
компакт-диске в файле c h a r t |
in u s e rfo rm .x ls m . |
|
События диаграмм
В Excel поддерживается ряд событий, связанных с диаграммами. Например, активиза ция диаграммы приводит к генерированию события A c tiv a te . Событие C a lc u la te происходит в случае, когда диаграмма принимает новые либо измененные данные. Можно также написать код VBA, который вызывается, когда происходит определенное событие.
П ерекрестная ссы лка
Для получения дополнительных сведений о событиях обратитесь к главе 19.
В табл. 18.1 перечислены все события диаграмм.
Таблица 18 .1 . Собы тия объекта C h a rt
Событие |
Действие, приводящее к возникновению события |
Activate |
Активизирован лист диаграммы или внедренная диаграмма |
BeforeDoubleClick |
На встроенной диаграмме выполнен двойной щелчок. Это событие |
|
происходит перед принятой по умолчанию реакцией на двойной |
BeforeRightclick |
щелчок мышью |
На встроенной диаграмме выполнен щелчок правой кнопкой мыши. |
|
|
Это событие происходит перед принятой по умолчанию реакцией на |
|
щелчок правой кнопкой мыши |
Calculate |
На диаграмме отображаются новые или обновленные данные |
19 Зак. 3 1 0 7
580 |
Часть V. Профессиональные методы программирования |
msg = "Спасибо за просмотр д и аграм м ы ."
MsgBox msg, , A ctiveW orkboo k .N am e
End Sub
Процедура C h a rt_ S e le c t, код которой приведен ниже, вызывается после выбора произвольного элемента диаграммы.
P r iv a te |
Sub C h a rt_ S e le c t(B y V a l |
E le m e n tID |
As Long, |
_ |
|
|||||||||||||
B yV al A r g l |
As |
Long, |
B yV al A rg2 |
As |
Long) |
|
|
|
||||||||||
Dim |
Id |
As |
S tr in g |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
S e le c t |
Case E le m e n tID |
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
Case |
x lA x is : |
Id |
= |
"О сь" |
|
|
|
|
|
|
|
|
||||
|
|
Case |
x l A x i s T it le : |
Id |
= |
|
"Н азвание |
оси" |
|
|
|
|||||||
|
|
Case |
x lC h a rtA re a : |
Id = "О бласть диаграммы" |
|
|||||||||||||
|
|
Case |
x l C h a r t T it le : |
Id |
= |
"З а го л о в о к диаграммы" |
|
|||||||||||
|
|
Case |
x lC o rn e r s : |
Id |
= |
"У глы " |
|
|
|
|
|
|
||||||
|
|
Case |
x lD a ta L a b e l: |
Id |
= |
|
"Подпись |
данных" |
|
|
||||||||
|
|
Case |
x lD a ta T a b le : |
Id |
= |
|
"Таблица |
данных" |
|
|
||||||||
|
|
Case |
x lD o w n B a rs : |
Id |
= |
"Нижние полосы" |
|
|
|
|||||||||
|
|
Case |
x lD r o p L in e s : |
Id |
= |
|
"П о д за го л о в о к". |
|
|
|||||||||
|
|
Case |
x lE r r o r B a r s : |
Id |
= |
|
"П огреш ность" |
|
|
|
||||||||
|
|
Case |
x l F l o o r : |
Id |
= |
"О снование" |
|
|
|
|
||||||||
|
|
Case |
x lH iL o L in e s : |
Id |
= |
|
"В ерхние/ниж ние линии" |
|
||||||||||
|
|
Case |
x lL e g e n d : |
Id |
= "Л е ге н д а " |
|
|
|
|
|||||||||
|
|
Case |
x lL e g e n d E n try : |
Id |
|
= |
"Запись |
легенды " |
|
|
||||||||
|
|
Case |
x lL e g e n d K e y : |
Id |
= |
|
"Ключ |
легенды " |
|
|
|
|||||||
|
|
Case |
x lM a jo r G r id lin e s : |
|
Id |
= |
|
"Базовые |
линии с е т ки " |
|||||||||
|
|
Case |
x lM in o r G r id lin e s : |
|
Id |
= |
|
"В спом огательны е |
линии с е т к и " |
|||||||||
|
|
Case |
x lN o th in g : |
Id |
= |
"Н и че го " |
|
|
|
|
||||||||
|
|
Case |
x lP lo tA r e a : |
Id |
= |
"О бласть п о строени я" |
|
|||||||||||
|
|
Case |
x lR a d a rA x is L a b e ls : |
Id |
= |
"Подписи |
оси |
л е п е с тка " |
||||||||||
|
|
Case |
x lS e r ie s : |
Id |
= |
"Ряд |
данных" |
|
|
|
|
|||||||
|
|
Case |
x lS e r ie s L in e s : |
Id |
|
= |
"Линии |
ряда |
данных" |
|
||||||||
|
|
Case |
x lS h a p e : |
Id |
= |
"Форма" |
|
|
|
|
|
|
||||||
|
|
Case |
x lT r e n d lin e : |
Id |
= |
"Тенденция" |
|
|
|
|||||||||
|
|
Case |
x lU p B a rs : |
Id |
= |
"Верхние |
полосы" |
|
|
|
||||||||
|
|
Case |
x lW a lls : |
Id |
= |
"С те н ки " |
|
|
|
|
|
|
||||||
|
|
Case |
x lX E r r o r B a r s : |
Id |
= |
"Гори зонтал ьн ая погреш н ость" |
||||||||||||
|
|
Case |
x lY E r r o r B a r s : |
Id |
= |
"В ертикальная |
погреш н ость" |
|||||||||||
|
|
Case |
E ls e : : |
Id |
= |
"Н ечто |
н е и зв е стн о е " |
|
|
|
||||||||
End |
S e le c t |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
MsgBox |
"Тип вы дел ения:" |
& Id |
& v b C rL f |
& A r g l & v b C rL f |
& A rg2 |
|||||||||||||
End Sub |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Эта процедура отображает окно сообщения, в котором находится описание выделенно го элемента. Если произойдет событие S e le c t, аргумент Elem entID будет содержать целое число, которое соответствует выделенному элементу. Аргументы A rgl и Arg2 со держат дополнительную информацию о выделенном элементе (дополнительные сведения об этом можно найти в справочной системе). Структура S e le c t Case применяется для преобразования встроенных констант в описательные строки.
П р и м е ч а н и е
Это далеко не полный список элементов, входящих в состав объекта C hart.
Именно поэтому пришлось воспользоваться оператором Case E ls e .
