Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA-2002.doc
Скачиваний:
25
Добавлен:
06.12.2018
Размер:
1.09 Mб
Скачать
  1. Разработка приложения “Решение треугольника”

Пусть имеется треугольник ABC с углами A,B,C и длинами противолежащих углам сторон LA,LB,LC. Разработать приложение, в котором по заданным параметрам треугольника определяются остальные - не заданные. Если исходные данные заданы так, что задачу решить нельзя, то программа должна выводить сообщение с помощью процедуры MsgBox.

Рекомендации. Разместить на листе Excel рисунок треугольника с подписями вершин, поля (TextBox) с именами TBA, TBB, TBC, TBLa, TBLb, TBLc и кнопку с заголовком Вычислить. Слева от текстовых полей поместить подписи A,B,C, LA,LB,LC. Событийная процедура, соответствующая командной кнопке, должна проверять каждый параметр (задан ли он) и вычислять (если не задан) по значениям других параметров.

  1. Разработка приложения “Определение площади произвольной фигуры”

Пусть многоугольник произвольной формы (полигон) задан координатами вершин 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

Функция может содержать следующие блоки:

  1. S=0, x1 = X(1), y1 = Y(1), i=2

  2. S = S + (y1 * (X(i) - X(i + 1)) + Y(i) * (X(i + 1) - x1) + Y(i + 1) * (x1 - X(i))) / 2

  3. i=i+1, передача управления блоку 2, если i<M

  4. Spoligon = Abs(S)

  1. Разработка приложений “Графические построения в плоскости 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 направлена вверх (как принято в геодезии). Построить оси координат, оцифровав их "круглыми" значениями, нанести многоугольник, подписать порядковые номера точек.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]