Листинг 19: Программный код макроса Fibon2 ( )




Public Sub Fibon2()

Dim N As Integer

Dim i As Integer

Dim a As Integer

Dim b As Integer

N = ActiveCell.Value

If Not IsNumeric(ActiveCell.Value) Then

MsgBox Prompt:=” Должно быть указано число!", Buttons:=vbCritical, Title:="Внимание!"

Exit Sub

End If

N = ActiveCell.Value

Select Case N

Case Is < 1

MsgBox Prompt:=" Указано неверное число!", Buttons:=vbInformation, Title:="Внимание!"

Case Is = 1

ActiveCell.Offset(1, -1).Value = 1

ActiveCell.Offset(1, 0).Value = 1

Case Else

ActiveCell.Offset(1, -1).Value = 1

ActiveCell.Offset(1, 0).Value = 1

a = 1

b = 1

i = 2

Do While i <= N

ActiveCell.Offset(i, -1).Value = i

ActiveCell.Offset(i, 0).Value = b

b = b + a

a = b - a

i = i + 1

Loop

End Select

End Sub

Как работает этот макрос? Сначала выполняется условный оператор, который проверяет условие того, что значение в ячейке является числовым. Для этого используется функция IsNumeric(). Если выражение, указанное аргументом функции, является числовым, то возвращается значение true (в противном случае результатом функции будет false). Поскольку перед функцией указана инструкция отрицания Not, блок условного оператора выполняется при нечисловом значении ячейки. Блок состоит из двух операторов. Первый выводит сообщение о том, что надо ввести числовое значение в активную ячейку. В функции MsgBox использован аргумент Buttons:=vbCritical, которым устанавливается тип окна сообщения с пиктограммой ошибки. Вторая команда – завершает процедуру Exit Sub. Альтернативная ветка Else в этом случае не используется.

Оператор Select Case проверяет значения переменной N (значение активной ячейки). Для случая, если это значение меньше 1 (условие Is < 1), выводится специальное информационное сообщение (используется аргумент Buttons:=vbInformation для функции MsgBox). Для случая, если значение активной ячейки равно 1 (условие Is=1), выводится одно число Фибоначчи. В прочих случаях выполняется блок команд Case Else. В этом блоке оператор цикла For заменен на оператор цикла Do While….Loop. Команды, размещенные в этом операторе, выполняются до тех пор, пока выполнено условие, указанное после ключевого словаWhile.

Результат вызова макроса Fibon2 при числовом, но некорректном значении в активной ячейке, показан на рис. 28:

 

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

Если ввести единицу и запустить макрос, то будет выведено первое число Фибоначчи, см. рис. 29:

 

Рис. 29. Результат вывода первого числа Фибоначчи.

Значения чисел Фибоначчи достаточно быстро растут с увеличением их порядкового номера. Поэтому созданные макросы могут использоваться для заполнения ячеек числами из первого десятка. Если указать слишком большое число
в ячейке, то произойдет ошибка, связанная с выходом за пределы допустимого диапазона целочисленных значений
в VBA. Избежать этой ошибки можно при использовании более подходящего типа данных, например Double.

 

Контрольные вопросы:

1) Введите в ячейку A1 число 6. Как будет выглядеть результат выполнения макроса SetValue3 (), задание 2, п. 3.
если код макроса SetValue3 ()будет иметь вид как в листинге 7*?

Листинг 7*: Программный код макроса SetValue3 ()

Public Sub SetValue3 ()

Range (“B3:D8”).Value = Range (“A1”).Value+3

End Sub

2) Выделите активную ячейку D10. Используя макрос SetValue4 () измените его код так, чтобы отступ от активной ячейки по вертикали и по горизонтали составлял 2.

3) Установите в ячейках С4:D10 шрифт: Times, размер: 14 пт.. Далее, используя макрос Formats2 (), измените его код так, чтобы ячейкам С4:D10 присваивалось значение шрифта Times, начертание: Bold.

4) Установите в ячейках С4:D10 шрифт: Times, размер: 14 пт.. Далее, используя макрос Formats3 (), измените его код так, чтобы ячейки С4:D10 увеличились в 2 раза по ширине, высота ячеек увеличилась на 4 позиции, цвет шрифта: Green, стиль шрифта: Bold.

5) Введите в ячейку А3 значение 0,5. Используя макрос CellFormula (), вычислите значение ячейки B3 по формуле: SIN(A3^2).

6) Введите в ячейку А1 число 2, а в ячейку В1 число 3. Используя макрос CellFormula5, вычислите значение ячейки А2 (А2 считается активной) по формуле, согласно которой значение ячейки вычисляется как сумма 1, и значения соседней ячейки, отстоящей справа вверху от активной (ответ:4).

7) Введите в ячейку А1 число 2, в ячейку A2 число 4. Используя макрос CellFormula5, вычислите значение ячейки B1
(B1 считается активной) по формуле, согласно которой значение ячейки вычисляется как сумма 1, и квадрата значения соседней ячейки, отстоящей слева внизу от активной (ответ:17).

8) При выполнении макроса Fibon2 введите в активную ячейку количество чисел Фибоначчи, которое вы хотите вывести на экран. Сначала число 20, затем число 50 и запустите макрос на выполнение. Проверьте результат выполнения макроса. В каком случае он не работает и почему?



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-26 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: