- •Программирование в 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.7.7. Модули классов и события
В отличие от листов диаграмм, события, связанные с внедренными диаграммами и объектом Application, по умолчанию отключены. Прежде чем Вы сможете работать с событиями применительно к внедренной диаграмме или объекту Application, Вы должны создать новый модуль класса и объявить в нем объект типа Chart или Application с событиями. Для создания нового модуля класса в редакторе Visual Basic предназначена команда Class Module (Модуль класса) из меню Insert (Вставка).
Чтобы включить события для объекта Application, добавьте в модуль класса объявление:
Public WithEvents Арр As Application
После того как новый объект с событиями объявлен, он появляется в списке Object (Объект) модуля класса, и Вы можете писать для него процедуры обработки событий. [При выборе этого объекта в списке Object (Объект) события, допустимые для него, перечисляются в списке Procedure (Процедура).]
Но, прежде чем работать со своими процедурами, Вы должны подключить объект, объявленный в модуле класса, к объекту Application. Для этого объявите в любом модуле:
Public Х As New EventGlass
где EventClass — имя модуля класса, созданного Вами для обработки событий.
Создав объектную переменную Х (экземпляр класса EventClass), Вы можете приравнять объект Арр класса EventClass объекту Application Microsoft Excel:
Sub InitializeApp() Set X.Арр = Application End Sub
После выполнения процедуры InitializeApp объект Арр в модуле класса EventClass указывает на объект Application Microsoft Excel, и определенные в модуле процедуры обработки событий будут выполняться при каждом возникновении соответствующих событий.
Хотя все это вроде бы требует большого объема работы, преимущество такой схемы в том, что можно использовать одну и ту же процедуру обработки событий для многих объектов. Пусть, например, в модуле класса объявлен объект Chart с событиями:
Public WithEvents cht As Chart
Теперь, чтобы процедуры обработки событий выполнялись всякий раз, когда происходит событие, связанное либо с первой, либо со второй диаграммой, можно написать такой код:
Dim С1 As New EventClass Dim C2 As New EventClass
Sub IntitializeCharts() Set Cl.cht = Worksheets(1).ChartObjects(1).Chart Set C2.cht = Worksheets(1).Chart0bjects(2).Chart End Sub
В модуле класса допускается объявлять объекты Worksheet или Workbook с событиями и использовать процедуры обработки событий нового класса с несколькими листами — в дополнение к стандартным процедурам обработки событий. Это позволяет написать процедуру обработки события Activate, выполняемую только при активизации, скажем, первого или пятого листа. Или использовать объект Chart, объявленный в модуле класса, чтобы создать процедуру обработки событий как для внедренных диаграмм, так и для листов диаграмм.
Лабораторная работа 4.
Использование элементов объектного программирования.
Задание:
Программы по п.1 лабораторной работы 1 оформить в виде подпрограмм, создать управляющую (головную) программу, позволяющую по желанию выполнять расчет по одной из этих подпрограмм.
Подпрограмма вычисления суммы чисел, записанных в текущем листе книги в ячейках С4:С13, результат заносится в ячейку С14:
Sub Сумма()
Summa = 0
For i = 4 To 13 Step 1
Summa = Summa + Range("C" + LTrim$(Str$(i)))
Next i
Range("C" + LTrim$(Str$(i))) = Summa
End Sub
Подпрограмма вычисления произведения чисел, записанных в текущем листе книги в ячейках С4:С13, результат заносится в ячейку С15:
Sub Произведение()
Product = 1
For i = 4 To 13 Step 1
Product = Product * Range("C" + LTrim$(Str$(i)))
Next i
Range("C" + LTrim$(Str$(i + 1))) = Product
End Sub
Подпрограмма вычисления функции (квадратичной параболы) чисел, записанных в текущем листе книги в ячейках С4:С13, результат заносится в ячейки D4:D14:
Sub Функция()
For i = 4 To 13 Step 1
Funcia = Range("C" + LTrim$(Str$(i))) ^ 2
Range("D" + LTrim$(Str$(i))) = Funcia
Next i
End Sub
Подпрограмма вызова управляющей формы:
Sub Start()
Управляющая.Show
End Sub
Программа кнопки «Сумма»
Private Sub CommandButton1_Click()
Call Сумма
End Sub
Программа кнопки «Призведение»
Private Sub CommandButton2_Click()
Call Произведение
End Sub
Программа кнопки «Функция»
Private Sub CommandButton3_Click()
Call Функция
End Sub
Рис.3.1. Вид управляющей формы
Для создания процедур, пользовательских форм, модулей следует пользоваться меню «Вставка» в среде Visual Basic. Для создания программы кнопки следует в редакторе формы выполнить двойной щелчек левой кнопки мыши на поверхности программируемой кнопки.