- •Простые вычисления в Excel.
- •Применение адресов ячеек (ссылок).
- •Применение имён
- •Создание функций пользователя в Excel с применением Visual Basic for Applications
- •Применение диалоговых окон (форм).
- •Построение диаграмм в Excel
- •Основы MathCad Назначение Mathcad
- •Функции
- •Построение графика функции
- •Структура цикл
- •Применение адресов ячеек
- •Вложенный цикл
- •Применение смешанной адресации клеток и имён
- •Решение с использованием функций vba
- •Применение функций массивов
- •Решение в MathCad
- •Программный элемент «Накопление»
- •Решение в Excel
- •Решение в MathCad
Применение диалоговых окон (форм).
В VBA есть диалоговые окна или формы пользователя аналогичные формам в VB. Для загрузки формы надо войти через панель Visual Basic в интегрированную среду разработки и выбрав в меню пункты «Insert» «UserForm» вставить форму. На панели элементов управления находятся текстовое поле – TextBox, командная кнопка – CommandButton , надпись – Label и другие элементы управления, свойства которых подобны соответствующим в VB, хотя названия несколько отличаются. Но есть дополнительные элементы, которые специфичны именно для Excel, а именно редактор ссылок – RefEdit, с помощью которого можно указывать мышью ячейки для ввода и вывода данных. Дадим форме имя (свойство Name) «frmV» и название (свойство Caption) «Вычисление объёма» в окне свойств (Properties). Поместим на форму три элемента управления RefEdit для ввода адресов ячеек с рабочего листа содержащих значения хорды, угла, дуги с именами по умолчанию RefEdit1, RefEdit2, RefEdit3 соответственно и для адреса ячейку, которая получит значение объёма (RefEdit4). Также поместим текстовое поле (TextBox1) для параллельного вывода значения объёма на форму и командную кнопку (CommandButton1) для запуска процедуры вычисления.
Для обращения к ячейке используется объект 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
Для вызова формы с рабочего листа на панели инструментов Visual Basic нажмем кнопку «Элементы управления» и поместим на лист кнопку. Дважды щелкнув по ней, напишем код вызова формы. Синтаксис оператора показа формы такой: ИмяФормы.Show
Private Sub CommandButton1_Click()
frmV.Show
End Sub
Обратите внимание, что эта процедура помещена в модуль рабочего Листа.
Вызвав форму и придавая фокус соответствующим элементам RefEdit и затем, щелкая в ячейках рабочего листа, введем адреса ячеек. Это можно сделать как мышью, так и набором с клавиатуры и вводить вместо адресов имена ячеек, если они имеются.
В ячейке, указанной для вывода получим значение объема, которое должно быть таким же, как и в предыдущих случаях. Для вычисления значения переменной x4 можно было использовать уже готовую функцию пользователя фнкОбъём, написав:
x4=фнкОбъём(x1, x2,x3)
Итак, проект содержит стандартный модуль с общедоступной (Public) функцией фнкОбъём(), форму со своим модулем, где находится локальная (Private) процедура ввода, вычисления, вывода данных и модуль рабочего листа «Лист1» с процедурой вызова формы .