- •3.5.2.Создание процедур и особенности способов ввода-вывода информации в vba
- •1. Особенности ввода-вывода информации в диалоговом режиме
- •4. Операторы Data и Read не используются в vba и при вычислении функций, так как аргументы функций могут быть введены непосредственно в ячейки рабочего листа Excel.
- •I. Задания по разветвляющимся алгоритмам
- •II. Задания по циклическим алгоритмам
4. Операторы Data и Read не используются в vba и при вычислении функций, так как аргументы функций могут быть введены непосредственно в ячейки рабочего листа Excel.
Пример 9: Вычислить значения функции уi=х2; при заданных значениях xi равными 1, 2,...12.
1. В ячейки А1:А12 рабочего листа введем значения хi равные 1, 2,...,12.
2. На листе модуля наберем текст функции
Function Y(x)
Y=x^2
End Function
3. Выделим ячейку В1 и щелкнем по кнопке мастер функции - fx. Далее - определенные пользователем, Y и ОК.
4. В строку х диалогового окна введем А1 и ОК.
5. Маркер заполнения протащим до В 12.
6. По результатам вычислений, используя мастер диаграмм, построим график.
Для создания процедуры, также как и для создания функции, необходимо выполнить команды:
1. Сервис,Макрос, Редактор Visual Basic, чтобы открыть окно редактора Visual Basic.
2. Вставка, Модуль – для создания листа Модуля.
3. Выбрать значок модуля в окне Проект, чтобы активизировать лист Модуля в окне редактора кода.
4. Набрать на листе Модуля Процедуру.
Для запуска процедур, в отличие от способов запуска функций, рассмотренных в п.3.5.1., используются способы запуска VBA-программ. На этапе создания процедур для их запуска используют один из способов в окне редактора VB- 1. Нажать клавишу F5. 2. Щелкнуть кнопку () Run на панели инструментов. 3. Выполнить команды пунктов меню Запуск\Запуск подпрограммы. В дальнейшем самостоятельно освоить другие способы быстрого запуска программ (л. , с. 72-85).
Рассмотрим пример создания процедуры с использованием оператора For-Each-Next
Пример10. Создание процедуры с использованием оператора For-Each-Next
Для перебора объектов группы подобных объектов, например, ячеек из диапазона или элементов массива, используется оператор цикла For-Each-Next, синтаксис которого приведен на стр ……
Приведенная ниже процедура Знак заменяет все положительные числа диапазона ячеек А1:В2 знаком "+", все отрицательные числа - знаком "-", а нуль оставляет без изменения:
Option Explicit
Sub Знак ()
Dim с(2,2) As Object
For Each с(2,2) In Worksheets ("Лист1").Range("A1:B2")
If IsNumeric(с(2,2).Value)Then
If с(2,2).Value>0 Then с(2,2).Value="+"
End If
If IsNumeric(с(2,2).Value)Then
If с(2,2)c.Value<0 Then с(2,2).Value="-"
End If
If IsNumeric(с(2,2).Value)Then
If с(2,2).Value=0 Then с(2,2).Value=0
End If
Next с(2,2)
End Sub
В процедуре Знак использовалась функция IsNumeric (выражение), которая возвращает True, если выражение может быть описано как числовое, и False - в противном случае.
Задания: 1. Реализовать процедуры примеров 1-10.
2. Индивидуальные задания для самостоятельной разработки функций и процедур.
I. Задания по разветвляющимся алгоритмам
1. Трем переменным a, b, c присвоены некоторые числовые значения. Найти наибольшее значение.
2. Трем переменным a, b, c присвоены некоторые числовые значения. Найти наименьшее значение.
3. Упорядочить числа A,B,C по убыванию.
4. Упорядочить числа А,В,С по возрастанию.
Замечание: в 3-м и 4-м заданиях использовать возможности оператора SWAP A, B, который обменивает местами значения переменных А и В.
5. Вычислить функцию
y=x(x-1)(x-2)/(x-1)(x-2).
Замечание: если х=1 или х=2, функция не определена, иначе значение функции y равно х.
6. Вычислить функцию
Y = x*x, если х > 0 и х < 3
x+2, если х>=3.
Замечание: использовать логику оператора IF ... THEN... ELSE.
7. Вычислить функцию пункта 6, но использовать логику оператора Select Case.
8. Проверить неравенства существования треугольника (a < b + c, b < a + c, c < a + b). Если неравенства выполняются, выдать на печать "треугольник существует", в противном случае - "треугольник не существует".
9. Вычислить функцию
Z = x^3/y, где y = SIN(NX) + 0.5.
Замечание: y может принимать значения, равные 0.
10. По известным значениям площади круга (Sкр) и площади квадрата (S кв) определить, поместится ли квадрат в круг. Для этого вывести условия вписанного квадрата в круг.
11. При известном значении площади круга (S кр) и площади квадрата (Sкв) определить, поместится ли круг в квадрат. Для этого вывести условия вписанного круга в квадрат.
12. Имеется 6 программ: А, В, С, D, Е и F.
1. Напечатать список программ.
2. Перейти к выполнению нужной программы, используя оператор Select Case.
13. Решить кв. уравнение ax2+bx+c=0.
14. В зависимости от номера месяца выдать сообщение о времени года (зима, весна, лето, осень). Использовать оператор Select Case.