- •Программирование в excel
- •Симферополь 2000
- •Факультет "Механизация сельского хозяйства" Программирование в excel
- •1. Основы программирования на vba
- •1.1. Создание, редактирование и запись программ
- •1.1.1. Запись макроса
- •1.1.2. Как найти макрос в проекте
- •1.1.3. Написание новой процедуры
- •Чем макрос отличается от процедуры
- •1.1.4. Процедуры типа Sub и Function
- •1.1.5. Закрытые и открытые процедуры
- •1.1.6. Использование значения, возвращаемого функцией
- •1.1.7. Выполнение процедуры Sub
- •1.1.8. Передача аргументов в процедуру
- •1.1.9. Именованные аргументы
- •1.1.10. Написание процедур для обработки событий
- •1.1.11. Где хранится код обработки события
- •1.1.12. Средства, ускоряющие написание программ
- •1.1.13. Как написать легкочитаемую программу
- •1.2. Переменные, константы и типы данных
- •1.2.1. Типы данных в Visual Basic
- •1.2.2. Объявление константы, переменной или массива
- •1.2.3. Объявление объектной переменной
- •1.2.4. Встроенные константы
- •1.3. Управляющие конструкции
- •1.3.1. Операторы ветвления
- •1.3.2. Операторы циклов
- •1.3.3. Вложение управляющих конструкций
- •1.3.4. Выход из циклов и процедур
- •1.4. Структура программы
- •2. Сортировка данных
- •2.1. Алгоритм сортировки обменами (алгоритм “пузырька”)
- •2.2. Алгоритм сортировки вставками
- •2.3. Алгоритм сортировки выбором элемента
- •2.4. Алгоритм быстрой сортировки (метод Хоора)
- •2.5. Алгоритм пирамиды (метод Уильямса-Флойда)
- •2.6. Учебные задачи по программированию сортировки данных
- •3. Работа vba с объектами Excel
- •3.1. Как получить справку по Visual Basic для Microsoft Excel
- •3.2. Объекты Microsoft Excel
- •3.3. Работа с объектом Application
- •3.4. Работа с объектом Workbook
- •3.4.1. Открытие рабочей книги
- •3.4.2. Закрытие рабочей книги
- •3.4.3. Создание и сохранение рабочей книги
- •3.5. Работа с объектом Range
- •3.6. Строковые ссылки в стиле а1 или имена диапазонов
- •3.6.1. Числовые индексы строк и колонок
- •3.6.2. Свойство Offset
- •3.6.3. Свойства CurrentRegion и UsedRange
- •3.6.4. Организация циклов для перебора ячеек диапазона
- •3.6.5. Применение свойства Address для отладки кода, работающего с объектом Range
- •3.7. Работа с событиями
- •3.7.1. Включение и отключение обработки событий
- •3.7.2. Использование событий, связанных с рабочими листами
- •3.7.3. События на уровне рабочего листа
- •3.7.4. События на уровне диаграммы
- •3.7.5. События на уровне рабочей книги
- •3.7.6. События на уровне приложения
- •3.7.7. Модули классов и события
- •4. Численные методы математики
- •4.1. Методы решения нелинейных уравнений
- •4.1.2. Метод деления отрезка пополам (метод дихотомии).
- •4.1.3. Метод Ньютона (касательных).
- •4.1.4. Метод хорд (секущих).
- •4.1.5. Метод итераций (метод последовательных приближений).
- •4.2.1. Теоретические сведения
- •4.2.2. Метод Крамера
- •4.2.3. Метод Гаусса
- •4.2.6. Метод Зейделя
- •4.3. Обработка экспериментальных данных
- •4.3.1. Задачи, которые возникают при обработке экспериментальных данных.
- •4.3.2. Интерполяция
- •4.3.2.1. Интерполяция функций
- •4.3.3.2. Определение параметров эмпирической формулы
- •4.4. Методы численного интегрирования
- •4.4.1. Метод трапеций
- •4.4.2. Метод Симпсона
- •4.4.3. Оценка точности формул численного интегрирования. Выбор шага интегриров-ания
- •4.4.3.1. Выбор шага интегрирования по оценке остаточного члена (ошибки)
- •4.4.3.2. Выбор шага интегрирования с помощью двойного пересчета
- •4.5.1. Теоретические сведения
- •4.5.2. Одноступенчатые методы
- •4.5.2.1. Решение с помощью рядов Тейлора
- •4.5.2.2 Метод Эйлера
- •4.5.2.3. Модифицированный метод Эйлера
- •4.5.2.4. Метод Эйлера-Коши
- •4.5.2.5 Метод Рунге-Кутта
- •4.5.3. Многоступенчатые методы
- •4.5.3.1. Методы прогноза и коррекции
- •4.6. Методы решения линейной краевой задачи для обыкновенных дифференциальных уравнений
- •4.6.1. Постановка задачи
- •4.6.2. Метод конечных разностей
- •4.6.3. Метод прогонки
- •4.6.4. Алгоритм решения краевой задачи методом прогонки.
3.6.5. Применение свойства Address для отладки кода, работающего с объектом Range
У любого объекта Range есть свойство Address, которое возвращает адрес ячеек диапазона в виде строки. В следующем примере при отладке процедуры HideColumns используется свойство Address:
Sub HideColumns() Set r = Worksheets( "Sheet1 ").UsedRange MsgBox r.Address ' только при отладке! For i = 1 To r.Columns.Count If i Mod 2 = 0 Then r.Columns(i).Hidden = True MsgBox r.Columns(i).Address ' только при отладке! End If Next i End Sub
Окна с сообщениями можно заменить контрольными выражениями (watch expressions). В предыдущем примере можно было бы установить два таких выражения — r.Address и r.Columns(i).Address — и понаблюдать за их значениями в окне Immediate (Проверка). Подробнее об отладке см. главу 14 “Отладка и обработка ошибок”.
3.7. Работа с событиями
Событийно-управляемое программирование предназначается для обработки различных событий, например, щелчок кнопки мыши или загрузка формы, запуск макроса при активизации или изменении листа. В Microsoft Excel 97 набор событий расширен и в него добавлены процедуры обработки событий, принимающие аргументы.
Microsoft Excel 97 допускает написание процедур обработки событий на уровне листа, диаграммы, книги или приложения. Например, событие Activate происходит на уровне листа, а событие SheetActivate доступно как на уровне книги, так и на уровне приложения. Событие SheetActivate для книги возникает при активизации любого из ее листов, а на уровне приложения — при активизации любого листа открытых в данный момент книг.
Процедуры обработки событий листа и книги создаются по умолчанию для любого открытого листа, диаграммы или книги. Чтобы написать процедуру обработки события для внедренной диаграммы или для приложения, создайте новый объект в модуле класса с помощью ключевого слова WithEvents. Модуль класса можно использовать и для создания процедур обработки событий, доступных из нескольких листов или книг.
3.7.1. Включение и отключение обработки событий
Для включения или отключения обработки событий предназначено свойство EnableEvents. Например, при сохранении книги методом Save возникает событие BeforeSave. Вы можете предотвратить это событие, установив свойство EnableEvents как False перед вызовом метода Save:
Application.EnableEvents = False ActiveWorkbook.Save Application.EnableEvents = True
3.7.2. Использование событий, связанных с рабочими листами
События, связанные с рабочими листами, включены по умолчанию. Чтобы просмотреть процедуры обработки событий для конкретного листа, подходит любой из следующих методов:
Щелкните правой кнопкой мыши ярлычок листа, выберите в контекстном меню команду View Code (Исходный текст) и укажите в списке Procedure (Процедура) имя нужного события.
Выберите из меню Tools (Сервис) команду Macro (Макрос), затем — Visual Basic Editor (Редактор Visual Basic). Теперь выберите в окне проекта интересующий Вас лист и либо щелкните кнопку View Code (Программа), либо вызовите из меню View (Вид) команду Code (Программа). В списке Object (Объект) укажите строку Worksheet или Chart, а в списке Procedure (Процедура) — имя события.