Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

8995

.pdf
Скачиваний:
2
Добавлен:
25.11.2023
Размер:
2.12 Mб
Скачать

Рисунок 6. Сохранение макроса

Наберите в редакторе VBA текст следующей функции, вычисляющей куб числа:

Function Куб (x As Integer) As Integer

Куб = x^3

End Function

Сохраните документ с поддержкой макросов.

Создайте на «Лист1» таблицу, представленную на рисунке 7.

Рисунок 7. Таблица для вычисления куба числа Воспользуйтесь созданной функцией для вычисления кубов. Для этого

установите курсор в ячейку B2, выполнить команду Вставить функцию (

). В диалоговом окне выберите категорию Определенные пользователем,

выберите функцию куб. Выполните действие с выбранной функцией и скопируйте ее в остальные ячейки таблицы.

По умолчанию функции, созданные пользователем, находятся в категории «Определенные пользователем». Можно разместить созданную пользователем функцию в любую категорию. Каждая категория имеет свой номер (таблица 1).

41

Таблица 1

 

Нумерация категорий функций

 

 

0

Полный алфавитный перечень

1

Финансовые

2

Дата и время

3

Математические

4

Статистические

5

Ссылки и массивы

6

Работа с базой данных

7

Текстовые

8

Логические

9

Информационные

10

Команды

11

Настройка

12

Управление макросами

13

Динамический обмен данными/Внешние

14

Определенные пользователем

15

Инженерные

С помощью команды: Application.MacroOptions Macro:=<имя макроса>, Category:=<номер категории>, где Macro:=<имя макроса> это название макроса, Category:= <номер> номер категории, куда разместить функцию.

Данную команду достаточно выполнить всего один раз и в дальнейшем при открытии книги функция будет находиться в определенной категории.

Description – возвращает строковое выражение, содержащее текст сообщения об ошибке. Поэтому, напишем процедуру InstallFunc, которая определит категорию для функции «Куб».

Sub InstallFunc()

Application.MacroOptions Macro:="Куб", Category:=3

Description ="Находит куб числа"

End Sub

Имена переменных

42

Использование переменных в программном коде предполагает предварительное их объявление или описание. Для этих целей используется оператор Dim.

Синтаксис оператора Dim: Dim <имя переменной 1> [имя переменной 2…]

При этом переменные, объявленные таким образом, будут переменными типа Variant.

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

Dim <имя переменной 1> As <тип переменной1>, <имя переменной 2>

As <тип переменной 2>,...,<имя переменной n>As <тип переменной n>

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

Тип переменной, указанный после ключевого слова As.

Оператор присваивания

После того как определили тип переменной, ей присваивается значение.

И только затем её можно использовать. Одним из способов задания значения переменной является оператор присваивания (=). Синтаксис оператора присваивания:

«переменная» = «выражение»

Пример

А = 5

В = "текст"

Математические операторы

В VBA для выполнения вычислений используются в качестве знаков арифметических операций математические операторы, которые представлены в таблице 2.

43

Таблица 2

 

 

 

 

Математические операторы

 

 

 

 

 

 

 

Оператор

 

 

Выполняемая операция

 

 

 

 

 

 

 

+

 

 

Сложение

 

 

 

 

 

 

 

-

 

 

Вычитание

 

 

 

 

 

 

 

*

 

 

Умножение

 

 

 

 

 

 

 

/

 

 

Деление

 

 

 

 

 

 

 

\

 

 

Целочисленное деление

 

 

 

 

 

 

 

 

Mod

 

 

Остаток от деления нацело

 

 

 

 

 

 

 

^

 

 

Возведение в степень

 

 

 

 

 

 

 

 

Функция InputBox

 

 

 

 

Функция InputBox

предназначена для вывода диалогового окна с

приглашением ввести текст и возвращения введенного значения типа String с

содержимым текстового поля.

Синтаксис функции

[<p>=] InputBox (<сообщение> [,<заголовок>] [,<строка по

умолчанию>] [,X][,Y] [,<справка>])

Обязательным параметром функции InputBox является <сообщение>,

если значения остальных параметров явно не указаны, используются их значения по умолчанию. X,Y - координаты левого верхнего угла.

Функция MsgBox

Назначение функции MsgBox ‒ вывод сообщение в диалоговом окне.

MsgBox ожидает нажатия кнопки и затем возвращает значения типа Integer.

[<p>=] MsgBox (<сообщение> [,<кнопки и значения>] [,<заголовок

окна>] [,<справка, раздел>])

p - переменная, которой присваивается код возврата.

Обязательным параметром функции MsgBox является <сообщение>,

имеющее тип String, отображаемое в диалоговом окне в виде сообщения.

Сообщение можно разделить на строки с помощью константы vbNewLine.

44

В круглых скобках описываются параметры, когда переменной

присваивается код возврата.

Пример: Создать код, вычисляющий сумму двух переменных.

Sub Пример ()

Dim x1 As Integer, x2 As Integer, x As Integer x1 = InputBox("Первое слагаемое")

x2 = InputBox("Второе слагаемое «) x = x1 + x2

MsgBox («Сумма двух слагаемых равна: « & x)

End Sub

В таблице 3 представлены функции, которые можно использовать в

выражениях.

Таблица 3

 

 

 

Полезные встроенные функции

 

 

 

 

 

 

 

 

 

функция

 

 

 

назначение

 

 

Sin(n)

 

 

возвращает синус угла n в радианах

 

Cos(n)

 

 

возвращает косинус угла n в радианах

 

Tan(n)

 

 

возвращает тангенс угла n радианах

 

Atn(n)

 

 

возвращает арктангенс n в радианах

 

log(n)

 

 

десятичный логарифм

 

 

Exp(n)

 

 

возвращает константу е в степени n

 

 

 

 

(является обратной к функции Log)

 

Abs(n)

 

 

возвращает абсолютное значение n

 

Round(a,b)

 

 

округляет число a до b десятичных знаков

Int(n)

 

 

округление до целого числа Int(-99.8) '-100

Fix(n)

 

 

округление до целого числа Fix(99.8) '99

Sign(n)

 

 

возвращает знак числа

 

 

Sqr(n)

 

 

квадратный корень из n

 

 

Sgn(n)

 

 

генерирует случайное число между 0 и 1

Rnd(n)

 

 

возвращает -1, если n<0; 0, если n=0; +1если n>0

Str(n)

 

 

преобразует числовое значение в строку

Val(n)

 

 

преобразует строку в числовое значение

 

 

 

Практические задания

 

 

Написать программный код, используя процедуру и функцию, в

соответствии

с

вариантом.

Функцию

разместить

в

категории

 

 

 

 

 

 

 

45

«Математические». Тригонометрические функции вычисляются при аргументах, представленных в радианах. Поэтому нужно перевести переменные из градусов в радианы. Например так:

myPi = 4 * Atn(1) (или Const PI = 3.14159265358979) X1 = X * myPi / 180

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вариант

1

= cos( )

 

 

sin( )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+ 2cos(5

)

 

1 + cos( )

2

 

(1 − 3 3 2 3)

 

3

 

1

 

 

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3 + 3

 

 

 

 

2

 

3

=

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

2

− 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3 + 2

+ 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

=

 

cos( 5 ))

− cos( )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

=

3 + 3 + 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

− −

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

=

 

0.4 cos( ) sin( ) sin(3

)

 

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

√|

2

 

 

+ + 1|

2(1 + )

 

 

 

 

 

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

= 2 sin( )

+

sin(3

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

=

 

 

 

sin(3

)

 

 

 

+

2cos(5 )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 + cos(3 )

 

 

 

 

 

 

 

 

 

 

 

 

11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

 

 

 

 

 

 

 

 

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12

=

 

2 cos( ) sin( ) cos(3 )

 

 

 

 

13

=

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14

= (cos( ) sin(3 ) + 1)

sin(3 )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15

 

1

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16

y 3cos( x)

 

 

 

sin( x)

 

 

cos( x)

 

 

 

 

 

 

 

 

 

 

1 sin( x)

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

46

Лабораторная работа 4. Реализация операторов управления

Цель: познакомиться с различными объектами анализа данных (листы рабочей книги, диаграммы, ячейки), особенностями реализации разветвляющегося вычислительного процесса.

Теоретические сведения

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

Классы объектов имеют иерархическую структуру. Общеприняты следующие обозначения объектов: табличный процессор Excel имеет обозначение Application, рабочая книга трактуется как Workbook, а рабочий лист – это Worksheet. В свою очередь рабочий лист электронной таблицы состоит из таких объектов как: диапазон (Range), ячейка (cells), диаграмма

(chart) и др.

Ввод/вывод информации через ячейки электронной таблицы

Оператор Сells используется для обращения к ячейке текущего листа электронной таблицы Excel. Синтаксис оператора:

Сells(<параметр1>, <параметр2>)

<параметр1> номер строки, в которой расположена ячейка.

<параметр2> номер столбца, в которой расположена ячейка.

Например, для того чтобы обратиться к ячейке А3, необходимо указать оператор cells(3,1).

Для обращения к ячейке некоторого конкретного листа нужно использовать оператор Worksheets. Синтаксис оператора:

Worksheets(<параметр3>).Cells(<параметр1>, <параметр2>)

параметр3 имя листа, на котором распложена ячейка.

Наберите в редакторе VBA текст следующего макроса.

Sub Пример_2()

47

Dim x As Integer, y As Integer, z As Integer x = InputBox("Введите первое число")

y = InputBox("Введите второе число") z = x + y

Worksheets("лист1").Cells(1, 1) = "x"

Worksheets("лист1").Cells(1, 2) = "y"

Worksheets("лист1").Cells(1, 3) = "z"

Worksheets("лист1").Cells(2, 1) = x

Worksheets("лист1").Cells(2, 2) = y

Worksheets("лист1").Cells(2, 3) = z

End Sub

В результате запуска этих двух программ вы должны получить макрос,

представленный на Рисунке 8.

Рисунок 8. Пример вывода данных в ячейки электронной таблицы.

Управлять последовательностью выполнения программы позволяют операторы условного перехода, безусловного перехода и циклы. Для реализации разветвляющегося вычислительного процесса в VBA используются операторы:

1.Оператор безусловного перехода GoTo

2.Оператор условного перехода If . . . Then . . . Else

3.Оператор выбора Select Case

Синтаксис оператора условного перехода If . . . Then . . . Else:

If <условие> Then <оператор_1> Else <оператор_2>

Другой способ это размещение оператора в несколько строк.

If <условие1> Then

<выражение1>

Else If <условие2> Then

48

<выражение2>

. . .

Else

<выражение-n>

End If

End If

Оператор If . . . Then . . . Else применяется, когда необходимо выполнить один или группу операторов в зависимости от некоторого условия.

Конструкция этого оператора может создаваться в одной или нескольких строках программы. При этом если оператор записывается в одной строке, то оператор End If не использует.

«Условие» чаще всего является простым сравнением, но оно может быть любым логическим выражением с вычисляемым значением. Это значение интерпретируется как False (Ложь), если оно нулевое, а любое ненулевое рассматривается как True (Истина). Если условие истинно, то выполняются все выражения, стоящие после ключевого слова Then.

If <условие> Then <выражение>

If <условие> Then

<выражение>

End If

Пример: Вычислить функцию

x 1, x 1

y . 1 x 2 , 1 x 1

x 1, x 1

Sub Программа_1()

Dim x As Single

Dim z As Double

x = InputBox("Введите x", "Ввод данных", 0)

If x < -1 Then

49

z = -x - 1

Else

If x > 1 Then z = x - 1

Else

z = Sqr(1 - x ^ 2)

End If

End If

MsgBox ("z=" & z)

End Sub

Пример

Sub Программа_2()

Dim x As Single

Dim z As Double

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

Worksheets("лист1").Cells(1, 4) = "z"

x = InputBox("Введите x", "Ввод данных", 0)

Worksheets("лист1").Cells(2, 3) = x

If x < -1 Then z = -x - 1

Else

If x > 1 Then z = x - 1

Else

z = Sqr(1 - x ^ 2)

End If

End If

MsgBox ("z=" & z)

Worksheets("лист1").Cells(2, 4) = z

50

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]