Private Sub CommandButton1_Click()

Dim x As Single, a As Single, m As Single, w As Single, z As Single

x = Worksheets("Лист2").Range("c17")

a = Worksheets("Лист2").Range("c18")

m = Worksheets("Лист2").Range("c19")

w = 0.5 * Sqr(x * a * Abs(1 - m * m))

z = Cos(Log(Abs(w)) / (2 + w))

Worksheets("Лист2").Range("g25") = w

Worksheets("Лист2").Range("h25") = z

End Sub

Здесь ввод исходных данных и вывод результата организован из ячеек рабочего листа и в ячейки рабочего листа.

Если использовать относительные ссылки, то эта же процедура может выглядеть следующим образом:

Private Sub CommandButton1_Click()

Dim x As Single, a As Single, m As Single, w As Single, z As Single

x = Worksheets("Лист1").Cells(17, 3)

a = Worksheets("Лист1").Cells(18, 3)

m = Worksheets("Лист1").Cells(19, 3)

w = exp(x) * a * (1 - m ^ 2)

z = Sin(w / (2 + w))

Worksheets("Лист1").Cells(24, 7) = w

Worksheets("Лист1").Cells(24, 8) = z

End Sub

Можно организовать ввод данных с клавиатуры, а вывод результатов – в окно сообщений. Тогда процедура примет такой вид:

Private Sub CommandButton2_Click()

Dim x As Single, a As Single

Dim m As Single, w As Single

Dim z As Single

x = Val(InputBox(“Введите x “))

a = Val(InputBox(“Введите a”))

m= Val(InputBox(“Введите m”))

w = 0.5*Sqr(x*a*abs(1 - m * m))

z = cos(log(w)/( 2 + w))

MsgBox (“w=” & w )

MsgBox (“z=” & z )

End Sub

Для проверки результатов введем в ячейку G24 формулу:

=0,5*КОРЕНЬ((C17*C18)*ABS(1-C19*C19))

А в ячейку H24:

=COS(LN(ABS(G24))/(2+G24))

Для очистки ячеек рабочего листа можно использовать метод Clear для объектов Cells() и Range().

Т.о. программный код кнопки «Очистить» будет выглядеть следующим образом:

Private Sub CommandButton4_Click()

Worksheets("Лист2").Range("g25").Clear

Worksheets("Лист2").Range("h25").Clear

End Sub

Если необходимо очистить диапазон ячеек, либо все ячейки рабочего листа, то нужно записать:

Private Sub CommandButton4_Click()

Worksheets("Лист1").Range("d8:d12").Clear ‘очистка диапазона ячеек

Worksheets("Лист2").Сells.Clear ‘очистка всех ячеек

End Sub

Свойства ячеек также можно менять программно, например, если нужно вывести значения на рабочем листе «Лист1», используя размер 14 и шрифт Times New Roman, то надо записать в процедуре перед выводом данных:

Worksheets("Лист1").Range("a2").Font.Name = "Times New Roman"

Worksheets("Лист1").Range("a2").Font.Size = 14

Отладка программы. Если при вводе оператора была допущена синтаксическая ошибка, то редактор VBA помечает строку красным цветом. При возникновении ошибки во время запуска программы (например, деление на 0) происходит прерывание выполнения программы и вывод сообщения о типе ошибки. При этом в окне сообщения можно выбрать режим остановки программы End или перехода в окно отладки программы Debug. Строка с ошибкой или процедура, где возникла ошибка, будет помечена желтым цветом.

Для исправления ошибки нужно прервать программу, нажав кнопку Reset Private Sub CommandButton1_Click() - student2.ru на панели инструментов редактора VBA, исправить ее и запустить программу заново. Или исправить ошибку, затем продолжить выполнение программы, нажав кнопку Private Sub CommandButton1_Click() - student2.ru Continue(Run).

Содержание заданий

1. Создать командную кнопку с заголовком «Пример расчета». Набрать для этой командной кнопки приведенный выше текст линейной программы и выполнить программу щелчком мыши по кнопке.

2. Создать командную кнопку c заголовком «Расчет по формулам» и записать для нее программу по условию, приведенному в табл. 4.2.

Выполнить программу и проанализировать результаты.

Таблица 4.2

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