- •Программирование в 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. Алгоритм решения краевой задачи методом прогонки.
1.2. Переменные, константы и типы данных
В Visual Basic, как и во всех языках программирования высокого уровня, для хранения значений используются переменные и константы. Переменные могут содержать данные любых поддерживаемых типов.
1.2.1. Типы данных в Visual Basic
Фундаментальные типы данных, поддерживаемые Visual Basic:
Тип данных |
Описание |
Диапазон |
1 |
2 |
3 |
Byte |
1-байтовое двоичное число |
от 0 до 255 |
Integer |
2-байтовое целое |
от -32 768 до 32 767 |
Long |
4-байтовое целое |
от -2 147 483 648 до 2 147 483 647 |
Single |
4-байтовое число с плавающей точкой |
от-3.402823Е38до-1.401298Е-45 (отрицательные значения) от 1.401298Е-45 до 3.402823Е38 (положительные значения) |
Double |
8-байтовое число с плавающей точкой |
От -1.79769313486231Е308 до -4.94065645841247Е-324 (отрицательные значения) от 4.94065645841247E-324 до 1.79769313486231Е308 (положительные значения) |
Currency |
8-байтовое число с фиксированной десятичной точкой |
от –922 337 203 685 477.5808 до 922 337 203 685 477.5807 |
String |
строка символов |
от нуля до почти двух миллиардов символов |
Variant |
дата/время, число с плавающей точкой, целое, строка или объект; занимает 16 байтов плюс по 1 байту на каждый символ, если значе-нием является строка |
даты: от 1 января 100 года до 31 декабря 9999 года числовые значения: тот же диапазон, что и для Double строки: тот же диапазон, что и для String позволяет также хранить значения Error или Null |
Boolean |
2 байта |
True или False |
Date |
8-байтовое значение даты/времени |
от 1 января 100 года до 31 декабря 9999 года |
Object |
4 байта |
Ссылка на любой объект |
1.2.2. Объявление константы, переменной или массива
Константа, используемая вместо литерала, объявляется оператором Const. При этом можно указать ее тип, область действия и присвоить ей значение:
Const MyVar = 459 Public Const MyString = "HELP" Private Const Mylnt As Integer = 5 Const MyStr = “Hello”, MyDouble As Double = 3.6547
По умолчанию константа считается закрытой. Если при объявлении константы тип данных явно не указан. Visual Basic назначает ей тип, который соответствует выражению, присвоенному константе. Подробнее на эту тему см. описание операторов Const, Public, Private и As в справочной системе.
Переменная объявляется с помощью ключевых слов Dim, Public, Private или Static. Чтобы явно задать тип переменной, используйте ключевое слово As.
Private I Dim Amt Static YourName As String Public BillsPaid As Currency Private YourName As String, BillsPaid As Currency Private Test. Amount, J As Integer
Если переменная не объявлена статической, ее значение после выполнения процедуры не сохраняется, и занятая ею память освобождается. По умолчанию Visual Basic присваивает переменным тип Variant.
Объявление массива аналогично объявлению переменной; при этом тоже используются ключевые слова Dim, Public, Private или Static. Верхние и нижние границы каждой размерности определяются целочисленными значениями, а тип элементов массива задается с помощью ключевого слова As. Прежде чем задействовать массив, Вы должны явно объявить его — неявное объявление массива недопустимо.
Объявляя массив, Вы определяете верхнюю и нижнюю границы каждой размерности в круглых скобках за именем массива. Если Вы указали только одно значение, оно считается верхней границей, а для нижней подставляется значение по умолчанию. Последнее значение равно 0, если только Вы не приравняли его единице оператором Option Base. Приведенные ниже операторы объявляют одномерные массивы, содержащие 15 и 21 элемент соответственно:
Dim counters(14) As Integer Dim sums(20) As Double
Разумеется, нижнюю границу можно задать явно. При этом значения верхней и нижней границы разделяются ключевым словом То:
Dim counters(1 То 15) As Integer Dim sums(100 To 120) As String
Здесь индекс counters изменяется от 1 до 15, а индекс sums — от 100 до 120.
Чтобы получить значения нижней и верхней границы уже существующего массива, воспользуйтесь функциями LBound и UBound.
Число размерностей массива может достигать 60. Для примера объявим трехмерный массив, у которого первая размерность равна 4, вторая — 10, а третья — 15. Общее число элементов массива равно произведению его размерностей, т. е. 600.
Dim multiD( 1 to 4, 1 to 10, 1 to 15)
Динамический массив объявляется так же, как и фиксированный, но без указания размерностей в скобках после имени массива:
Dim dynArray() As Integer
А затем где-то в процедуре Вы определяете нужное число элементов массива оператором ReDim:
ReDim DynArray(X+1)
Ключевое слово Preserve позволяет изменять размер массива без потери его текущего содержимого. Например, чтобы увеличить размер массива на один элемент без потери значений существующих элементов, сделайте так:
ReDim Preserve myArray(UBound(myArray) + 1)
Подробнее на эту тему см. описание оператора ReDim в справочной системе.