- •Лабораторный практикум по информатике для студентов очной формы обучения
- •Часть II. Visual Basic for Applications
- • Иркутский государственный технический университет, 2002
- •664074, Иркутск, ул. Лермонтова, 83
- •Введение
- •Создание интерфейса пользователя
- •Элементы управления
- •2. Основные понятия
- •3. Редактор vba
- •4. Работа с переменными, массивами, константами и со свойствами объектов
- •5. Основные инструкции языка Visual Basic
- •Арифметические операции
- •6. Создание пользовательских форм
- •7. Отладка приложений
- •Р ис. 4. Окно контрольного значения
- •8. Лабораторные работы
- •Vba1. Создание простейшего интерфейса. Калькулятор
- •Vba2. Разветвления
- •Vba3. Переменные, процедуры, функции, циклы, массивы
- •Vba4. Сортировка чисел в столбце по возрастанию или убыванию
- •Vba5. Сортировка чисел в столбце по возрастанию или убыванию с созданием формы
- •Vba6. Создание приложения для вычисления многочленов
- •Vba7. Сортировка чисел в столбце по возрастанию или убыванию с созданием формы и панели инструментов с кнопкой
- •9. Самостоятельные и контрольные задания Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Задание 5
- •Разработка приложения “Решение системы линейных уравнений”
- •2. Разработка приложения “Статистический анализ данных”
- •Разработка приложения “Решение треугольника”
- •Разработка приложения “Определение площади произвольной фигуры”
- •Разработка приложений “Графические построения в плоскости xoy”
- •Разработка приложения “Вычисление определенного интеграла”
- •Интегрирование по методу прямоугольников
- •Интегрирование по методу трапеций
- •Метод Симпсона (парабол)
- •Решение нелинейных уравнений
- •Определение границ существования корней
- •Отделение корней
- •Уточнение корней
- •8. Решение систем линейных алгебраических уравнений
- •По коэффициентам системы составляют расширенную матрицу
- •По элементам последней строки матрицы (1.2) можно найти значение
- •9. Приближенные методы решения систем алгебраических уравнений
- •10. Интерполяция функций, заданных таблично
- •11. Допольнительные курсовые работы для студентов горно-геологических специальностей
- •1. Вычисление координат замкнутого теодолитного хода
- •2. Разработка приложения “Прямая геодезическая задача”
- •3. Разработка приложения “Обратная геодезическая задача”
- •4. Разработка приложения “Преобразование географических координат в прямоугольные и прямоугольных в географические”
- •Литература к курсовой работе 4.
Vba2. Разветвления
Вычислить значения функций в области определения х [-1.7,1.5].
Y = (1+x)/(1+ )
f = cos2(3x) - cos(x)sin(x)
= 3.14159265 ( можно также вычислить как функцию ПИ( ) )
, x<=0
g =
( 1+x)/(1+ ), x >0
(1+x+x2)/(1+x2), x<0
z = , x>=0 и x<1
2 Abs(0.5+Sin(x)), x>=1
Для вычислений на листе Excel (см. приведенный ниже рисунок) разместить поля (TextBox) с именами TBx, TBy, TBf, TBg, TBz. Рядом с полями поместить надписи x, y, f, g, z. Кроме того, на лист Excel поместить кнопку CommandButton1 и написать процедуру для вычисления указанных функций. Если заданное значение x не попадает в область определения функции, то в соответствующее поле занести пробел.
Vba3. Переменные, процедуры, функции, циклы, массивы
Предположим, что на листе Excel в диапазоне ячеек (R1C1 : RmCn) находится таблица данных, а ячейки столбца n+1 и строки m+1, примыкающие к таблице, - пусты.
1 2 3 - номера столбцов: j=1,…..,n
Требуется разместить на листе Excel командную кнопку с заголовком Вычислить, а в модуль, соответствующий листу Excel, включить подпрограммы-функции Mrow и Ncol для определения m и n, процедуру TabA для копирования таблицы с листа Excel в двумерный массив A, а также событийную процедуру, которая должна включать в себя:
резервирование переменных i, j, m, n типа Integer,
резервирование переменной S типа Single,
резервирование массива A без указания его размерности, т.е. Dim A( ) As Single,
определение m и n путем использования функций Mrow и Ncol,
переопределение размерности массива A, т.е. ReDim A (1 To m, 1 To n),
копирование таблицы в массив A с помощью процедуры TabA,
вычисление и размещение в строке, имеющей номер m+2, сумм по столбцам.
Рекомендации.
Для определения m и n в функциях Mrow и Ncol применить циклы типа Do-Loop:
Function Mrow() As Integer
Dim i As Integer
i = 1
Do Until IsEmpty (Cells(i, 1))
i = i + 1
Loop
Mrow = i - 1
End Function
Процедура TabA должна иметь следующий заголовок:
Sub TabA(m As Integer, n As Integer, A( ) as Single)
Для копирования таблицы в массив A использовать двойной цикл типа For-Next:
For i=1 To m
For j=1 To n
A(i,j)=Cells(i,j).Value
Next j
Next i
Для вычисления сумм столбцов в событийной процедуре также использовать двойной цикл, полагая, что исходные данные находятся в массиве A. Здесь внешний цикл - по j. Он включает в себя начальное присваивание S=0, цикл по i, в котором наращивается значение S, и, наконец, присваивание j-го результата: Cells(i,j).Value = S
Vba4. Сортировка чисел в столбце по возрастанию или убыванию
На листе Excel для создания интерфейса пользователя разместите элементы управления: надпись Номер столбца; поле TextBox1 и счетчик SpinButton1 для указания номера столбца; переключатели Option1, Option2 с надписями По возрастанию, По убыванию и кнопку с надписью Сортировать - см. рисунок.
2. Для поля TextBox1 и для счетчика SpinButton1 установите свойство Value=1. Кроме того, для счетчика установите значения свойств Min=1 и Max=20. Для счетчика создайте событийную процедуру SpinButton1_Change() - при изменении пользователем значения счетчика она должна изменять значение TextBox1.Value, делая его равным значению счетчика. Точно так же для поля TextBox1 создайте событийную процедуру TextBox1_Change() – она должна изменять значение (свойство Value) счетчика, как только пользователь изменит значение, хранимое в текстовом поле.
Создайте событийную процедуру, соответствующую командной кнопке. Эта процедура должна определить номер j столбца, подлежащего сортировке, количество чисел m в этом столбце и выполнить сортировку методом пузырька. В процедуре зарезервируйте целые переменные i, j, m, переменную F типа Variant и переменные Flag и R типа Boolean. Процедура сортировки методом пузырька может включать следующие блоки:
Flag=False (признак того, что еще не было перестановок чисел в столбце j); i=2;
R = Cells(i-1,j).Value - Cells(i,j).Value (R=True, если значение в ячейке i-1 больше, чем в i);
если надо сортировать по возрастанию, то R = Cells(i,j).Value - Cells(i-1,j).Value;
если R=True, то исполняется блок 5;
F = Cells(i-1,j).Value; Cells(i-1,j).Value = Cells(i,j).Value; Cells(i,j).Value = F ; Flag=True; (перестановка чисел, регистрация этого факта путем присваивания Flag=True)
i=i+1; если i <= m , то передача управления блоку 2 - для сравнения следующей пары чисел;
Если Flag =True, то передача управления блоку 1, иначе конец, т.к. перестановок не было.