- •Лабораторный практикум по информатике для студентов очной формы обучения
- •Часть 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.
-
Разработка приложения “Решение треугольника”
Пусть имеется треугольник ABC с углами A,B,C и длинами противолежащих углам сторон LA,LB,LC. Разработать приложение, в котором по заданным параметрам треугольника определяются остальные - не заданные. Если исходные данные заданы так, что задачу решить нельзя, то программа должна выводить сообщение с помощью процедуры MsgBox.
Рекомендации. Разместить на листе Excel рисунок треугольника с подписями вершин, поля (TextBox) с именами TBA, TBB, TBC, TBLa, TBLb, TBLc и кнопку с заголовком Вычислить. Слева от текстовых полей поместить подписи A,B,C, LA,LB,LC. Событийная процедура, соответствующая командной кнопке, должна проверять каждый параметр (задан ли он) и вычислять (если не задан) по значениям других параметров.
-
Разработка приложения “Определение площади произвольной фигуры”
Пусть многоугольник произвольной формы (полигон) задан координатами вершин X,Y в двух столбцах на листе Excel. На этом же листе разместить командную кнопку и поле (TextBox) с именем TBS для вывода значения площади. Слева от поля TBS поместить надпись Площадь полигона. Вычисление площади целесообразно локализовать в подпрограмме-функции вида
Function Spoligon(M As Integer, X() As Single, Y() As Single) As Single
Dim i As Integer, x1 As Single, y1 As Single, S As Single
{ Вычисление S }
End Function
Функция может содержать следующие блоки:
-
S=0, x1 = X(1), y1 = Y(1), i=2
-
S = S + (y1 * (X(i) - X(i + 1)) + Y(i) * (X(i + 1) - x1) + Y(i + 1) * (x1 - X(i))) / 2
-
i=i+1, передача управления блоку 2, если i<M
-
Spoligon = Abs(S)
-
Разработка приложений “Графические построения в плоскости xoy”
Различные графические построения часто необходимы в любой практической деятельности. В литературе по VBA этот вопрос практически не освещен, но в Excel и в Word всегда можно вызвать на экран панель инструментов Рисование и конструировать рисунок, включая в него линии, надписи и другие фигуры, образцы которых (Shapes) представлены на панели инструментов Рисование. Если перед созданием рисунка включить запись макроса (кнопка Записать макрос на панели инструментов Visual Basic), а затем в окне Visual Basic посмотреть его текст и, кроме того, обратиться к встроенной справке, то становится ясно, как программировать векторную графику в VBA. Именно так мы и поступили. Далее приводится начало модуля, содержащего базовые процедуры, с помощью которых можно программировать графические построения на плоскости XOY.
' Глобальные переменные и константы
Dim cx As Single, cy As Single
' cx,cy - масштабные коэффициенты: пиксели/сантиметры
Dim nx1 As Integer, ny1 As Integer, nx2 As Integer, ny2 As Integer
Dim RedClr As Integer, GreenClr As Integer, BlueClr As Integer
Dim FntName As String, FntSize As Integer, FntColor As Integer
Const nx0 As Integer = 25.5: Const ny0 As Integer = 25.5:
' Инициализация графического окна размером Lx ∙ Ly (в сантиметрах)
' Начало координат в левом верхнем углу окна, ось X направлена вправо, Y- вниз
Sub GrIni()
SP 0, 0, 0
cx = TextBoxCX.Value: cy = TextBoxCY.Value
Lx = TextBoxLX.Value: Ly = TextBoxLY.Value
Лист2.Activate: Лист2.Shapes.SelectAll
Selection.Delete ' Удаление графических элементов с листа 2
Лист2.Shapes.AddShape(msoShapeRectangle, nx0, ny0, Lx * cx, Ly * cy).Select
End Sub
' Пересчет координат из сантиметров чертежа в пиксели (точки)
Function GETnx(xcm As Single) As Integer
GETnx = nx0 + xcm * cx
End Function
Function GETny(ycm As Single) As Integer
GETny = ny0 + ycm * cy
End Function
' Перемещение в точку xcm, ycm (Move Absolute, координаты точки - в см)
Sub MA(xcm As Single, ycm As Single)
nx1 = GETnx(xcm): ny1 = GETny(ycm)
End Sub
' Вычерчивание линии из текущей точки в точку xcm, ycm (Plot Absolute)
Sub PA(xcm As Single, ycm As Single)
nx2 = GETnx(xcm): ny2 = GETny(ycm)
With Лист2.Shapes.AddLine(nx1, ny1, nx2, ny2).Line
.ForeColor.RGB = RGB(RedClr, GreenClr, BlueClr)
End With
nx1 = nx2: ny1 = ny2
End Sub
' Установка цвета линий (Set Pen)
Sub SP(Red As Integer, Green As Integer, Blue As Integer)
RedClr = Red: GreenClr = Green: BlueClr = Blue
End Sub
' Установка шрифта, его размера и цвета (Set Font)
' Цвет: 1-черный, 2-пусто, 3-красный, 4- ярко-зеленый, 5-синий,
' 6-желтый, 7-светло-фиол., 8-голубой, 9-коричн., 10-зеленый, 11-темно-синий
Sub SF(Name As String, Size As Integer, Color As Integer)
FntName = Name: FntSize = Size: FntColor = Color
End Sub
' Надпись (Write String) – указываются размеры текстового окна и сам текст
Sub WS(xcm As Single, ycm As Single, Lxcm As Single, Lycm As Single, _
Txt As String)
Лист2.Shapes.AddTextbox(msoTextOrientationHorizontal, _
GETnx(xcm), GETny(ycm), Lxcm * cx, Lycm * cy).Select
Selection.ShapeRange.Line.Visible = msoFalse
Selection.Characters.Text = Txt
With Selection.Characters(Start:=1, Length:=Len(Txt)).Font
.Name = FntName
.Size = FntSize
.ColorIndex = FntColor
End With
End Sub
' Значок (1-восьмиугольник, 2-звездочка, 3-треугольник)
Private Sub SignN(xcm As Single, ycm As Single, _
Lxcm As Single, Lycm As Single, NS As Integer)
If NS = 1 Then Worksheets(2).Shapes.AddShape(msoShapeOctagon, _
GETnx(xcm), GETny(ycm), Lxcm * cx, Lycm * cy).Select
If NS = 2 Then Worksheets(2).Shapes.AddShape(msoShape5pointStar, _
GETnx(xcm), GETny(ycm), Lxcm * cx, Lycm * cy).Select
If NS = 3 Then Worksheets(2).Shapes.AddShape _
(msoShapeIsoscelesTriangle, GETnx(xcm), GETny(ycm), Lxcm * cx, Lycm * cy).Select
End Sub
Private Sub Btn1_Click() ' Пример событийной процедуры
GrIni
MA 5, 5
PA 10, 5
SP 200, 0, 0
PA 10, 10
SF "Times New Roman Cyr", 9, 11
WS -0.8, -0.2, 0.8, 0.4, "0.0"
End Sub
Предлагаемые процедуры разработаны нами, чтобы избежать непосредственного использования конструкций VBA, позволяющих размещать на листе книги Excel линии и надписи, поскольку синтаксис этих конструкций довольно сложен. Приведенный в конце модуля пример простейшей событийной процедуры показывает, как используя процедуры GrIni, MA, PA, SP, SF, WS, программировать построение графиков, схем, чертежей и т.п. Набор перечисленных процедур расчитан на то, что на листе 1 книги Excel размещены поля TextBoxLX, TextBoxLY, TextBoxCX, TextBoxCY и командная кнопка Btn1.
Lx 16
Ly 16
27 cx
Построить
график
29 cy
В полях редактирования (TextBox) задаются размеры чертежа в см и масштабные коэффициенты для перехода от см к точкам (пикселям). Коэффициенты cx, cy можно скорректировать после вывода чертежа на принтер. Процедура GrIni должна использоваться первой – она вычерчивает прямоугольное окно размером Lx∙Ly на листе 2 книги Excel. В этом окне затем проводятся дальнейшие построения. Остальные процедуры легко понять по распечатке. Теперь сформулируем варианты курсовой работы.
Вариант 1. На листе 1 разместить элементы управления и в двух столбцах - значения X, Y. На листе 2 построить график Y(X). При построении координатных осей найти диапазоны изменения X, Y; оси оцифровать «круглыми» значениями.
Вариант 2. Аналогичен варианту 1, но надо строить график X(Y).
Вариант 3. Построить разными цветами графики F1(X), F2(X), разместив на листе 1 три ряда (столбца) чисел: X, F1, F2. Оба графика построить в одном и том же масштабе.
Вариант 4. Построить многоугольник (полигон) заданный координатами вершин X,Y в двух столбцах на листе Excel. Считать, что ось X направлена вверх (как принято в геодезии). Построить оси координат, оцифровав их "круглыми" значениями, нанести многоугольник, подписать порядковые номера точек.