Применение диалоговых окон (форм)

В VBA есть диалоговые окна или формы пользователя аналогичные формам в VB.
Для загрузки формы надо войти через панель Visual Basic в интегрированную среду разработки и выбрав в меню пункты «Insert»à «UserForm» вставить форму. На панели элементов управления находятся текстовое поле – TextBox, командная кнопка – CommandButton , надпись – Label и другие элементы управления, свойства которых подобны соответствующим в VB, хотя названия несколько отличаются. Но есть дополнительные элементы, которые специфичны именно для Excel, а именно редактор ссылок – RefEdit, с помощью которого можно указывать мышью ячейки для ввода и вывода данных. Дадим форме имя (свойство Name) «frmV» и название (свойство Caption) «Вычисление объёма» в окне свойств (Properties). Поместим на форму три элемента управления RefEdit для ввода адресов ячеек с рабочего листа содержащих значения хорды, угла, дуги с именами по умолчанию RefEdit1, RefEdit2, RefEdit3 соответственно и для адреса ячейку, которая получит значение объёма (RefEdit4). Также поместим текстовое поле (TextBox1) для параллельного вывода значения объёма на форму и командную кнопку (CommandButton1) для запуска процедуры вычисления.

Применение диалоговых окон (форм) - student2.ru Применение диалоговых окон (форм) - student2.ru

Для обращения к ячейке используется объект Range, являющегося свойством рабочего листа, у которого в свою очередь есть свойство Value, содержащее значение ячеек, адрес которых будет аргументом метода Range.

В качестве аргумента используем элемент управления RefEdit таким образом, чтобы присвоить переменной значения, находящейся в ячейке используем синтаксис:

X=Range(RefEdit1.Value).Value

Так как свойство Value – это свойство по умолчанию как для Range, так и для RefEdit, то его можно не использовать и написать

X=Range(RefEdit1)

Двойной щелчок мыши по командной кнопке создаст в окне модуля формы заготовку процедуры, запускаемой по щелчку по этой кнопке.

В качестве примера вычисления объема напишем следующий код:

Private Sub CommandButton1_Click()

Const Pi = 3.14159265358979

Dim x1 As Double, x2 As Double, x3 As Double, x4 As Double

x1 = Range(RefEdit1) ‘присвоение переменной x1 значение ячейки, адрес которой ‘находится в RefEdit1

x2 = Range(RefEdit2)

x3 = Range(RefEdit3)

x4 = Pi * x1 ^ 3 * 1 / Tan(Pi / 180 * x3 / 2) * Tan(Pi / 180 * x2) / (8 * Sin(Pi / 180 * x3 / 2) ^ 2)

TextBox1.Text = x4

Range(RefEdit4) = x4 ‘присвоение ячейки с адресом, находящимся в RefEdit4 ‘вычисленного значения

End Sub

Применение диалоговых окон (форм) - student2.ru

Для вызова формы с рабочего листа на панели инструментов Visual Basic нажмем кнопку «Элементы управления» и поместим на лист кнопку. Дважды щелкнув по ней, напишем код вызова формы. Синтаксис оператора показа формы такой: ИмяФормы.Show

Private Sub CommandButton1_Click()

frmV.Show

End Sub

 
  Применение диалоговых окон (форм) - student2.ru

Применение диалоговых окон (форм) - student2.ru Применение диалоговых окон (форм) - student2.ru

Обратите внимание, что эта процедура помещена в модуль рабочего Листа.

Вызвав форму и придавая фокус соответствующим элементам RefEdit и затем, щелкая в ячейках рабочего листа, введем адреса ячеек. Это можно сделать как мышью, так и набором с клавиатуры и вводить вместо адресов имена ячеек, если они имеются.

Применение диалоговых окон (форм) - student2.ru

В ячейке, указанной для вывода получим значение объема, которое должно быть таким же, как и в предыдущих случаях. Для вычисления значения переменной x4 можно было использовать уже готовую функцию пользователя фнкОбъём, написав:

x4=фнкОбъём(x1, x2,x3)

Итак, проект содержит стандартный модуль с общедоступной (Public) функцией фнкОбъём(), форму со своим модулем, где находится локальная (Private) процедура ввода, вычисления, вывода данных и модуль рабочего листа «Лист1» с процедурой вызова формы .

Применение диалоговых окон (форм) - student2.ru Применение диалоговых окон (форм) - student2.ru

Применение диалоговых окон (форм) - student2.ru

Задание на лабораторную работу №9

1. Создать в VBA форму для расчёта значения выражения. Выражение придумать самостоятельно, оно должно иметь не менее трёх аргументов. Отчет состоит из кода процедуры, вида формы в режиме разработки, вида формы в режиме вычислений.

2. Выполнить задания к лабораторной работе № 8 применяя для ввода и вывода элементы управления RefEdit в диалоговых окнах.

Лабораторная работа № 10

Пакет MatLab. Операции над матрицами. Решить заданную СЛАУ методом Крамера и матричным методом

Решение систем линейных уравнений относится к самой массовой области применения матричных методов. Система линейных уравнений имеет вид:

Применение диалоговых окон (форм) - student2.ru

Рассмотрим различные способы решения систем уравнений.

Матричный способ решения систем линейных уравнений

Пусть А – матрица коэффициентов при неизвестных;

В – вектор-столбец свободных членов;

Х – вектор-столбец неизвестных, т.е.

Применение диалоговых окон (форм) - student2.ru

Тогда систему уравнений можно записать в матричном виде

A*X=В. Решение системы уравнений имеет вид Х=А-1*B

A-1- матрица, обратная матрице А.

Пример

Решить систему уравнений

Применение диалоговых окон (форм) - student2.ru

Порядок ввода:

>> A=[2 –1;5 2]

>> В=[4; 3]

>> X=A^–1*B

В результате получим х1=1,222, х2=–1,556.

Решение системы линейных уравнений методом Крамера

Для решения системы линейных уравнений методом Крамера не-

обходимо:

1. Задать главную матрицу из коэффициентов при неизвестных.

2. Задать вспомогательные матрицы (в главной матрице заменить

поочередно один столбец значениями свободных членов).

3. Вычислить неизвестные системы уравнений, разделив опреде-

литель соответствующей вспомогательной матрицы на опре-

делитель главной матрицы.

Пример

Решить систему уравнений

Применение диалоговых окон (форм) - student2.ru

Порядок ввода:

>> A=[2 –1;5 2]

>> A1=[4 –1;3 2]

>> A2=[2 4;5 3]

>> х1=det(A1)/det(A)

>> х2=det(A2)/det(A)

В результате получим х1=1,222, х2=–1,556.

Задание на лабораторную работу № 10

Выполнить задания к лабораторным работам №2 и № 3 в системе MatLab.

Содержание отчета

По каждому заданию лабораторной работы должны быть представлены отчёты в распечатанном виде с текстом задания, со скриншотами рабочих листов, с комментариями к кодам программ, объяснениями выполняемых действий

Методические материалы рассмотрены и утверждены на заседании кафедры «Информатика и информационная безопасность» 17.01.2017 г., протокол № 6

Разработчик: ст.преподаватель кафедры «Информатика и информационная безопасность» В.И. Носонов..

Наши рекомендации