Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Основы программирования на Visual Basic и VBA в Excel 2007
.pdf
39. Еще две пользовательские функция Excel
Ðèñ. 39.5
В активной ячейке появится количество значений, превосходя-
ùèõ h.
171

Заключение
Данная книга дает лишь начальное представление о VBA. Чтобы стимулировать продолжение изучения этого алгоритмического
языка, приведем цитату из книги [6].
«Примерно 90 % от общего числа пользователей работают только со средствами рабочего листа Excel, без применения языка программирования VBA, а значит, они используют лишь не более
10 % от реальных возможностей Excel. Таким образом, большая
часть средств Excel остается невостребованной просто потому, что
многие не знают о наличии VBA или не умеют им пользоваться».
Если при изучении VBA вы не все поймете, это не страшно.
Дело в том, что сейчас программирование (в частности на VBA)
достигло такого уровня сложности, что часто приходится работать
«по образцу». Согласно этому методу, разработчик программы использует чужие программы или их части, не всегда до конца понимая, как они работают.
VBA является мощным средством увеличения возможностей
табличного процессора Excel и всей системы Microsoft Office.
Продолжить изучение этого алгоритмического языка можно по
материалам справочных систем Microsoft Office. Рекомендуем также посетить сайт www.ozgrid.com авторов книги [11], а также использовать поисковую систему www.google.com для поиска готовых макросов.
172

Приложение 1
Типы данных Visual Basic
Тип данных
Boolean
(логический)
Byte (короткий целый
беззнаковый)
Integer
(целый) 2B Целые числа от -32
Long (длинный целый)
Размер ячейки
(B — áàéò)
2B
1B
4B
Currency (денежный)
8B
Значения переменной/константы
True (истина, логическая единица)
и
False (ложь, логический нуль)
Целые числа от 0 до 255
Целые числа от -2
2 147 483 647
Числа с четырьмя десятичными
знаками
от -922
до 922 337 203 685 477.5807
Single (с плавающей
точкой одинарной точности)
4B
Числа с дробной частью от
-3.402823•10
для отрицательных чисел и от
1.401298•10
для положительных чисел
Double (с плавающей
точкой двойной точности)
8B
Числа с дробной частью от
-1.79769313486231•10
-4.94065645841247•10
для отрицательных чисел и
от 4.94065645841247•10
до 1.79769313486232•10
для положительных чисел
Date (äàòà)
String (строковый пе
ременной длины)
String (строковый по
стоянной длины)
-
-
Задается при
выполнении
оператора
8B
10B+1B
символ
íà
От 1 января 100 года до
31
декабря 9999 года
Длина строки от 0 до 2
Длина строки от 1 до 2
Dim
или примечание
768 äî 32 767
147 483 648 äî
337 203 685 477.5808
38
äî -1.401298•10
-45
äî 3.402823•10
308
äî
-324
-324
308
31
символов
16
символов
-45
38
173

Г. З. Гарбер. Основы программирования на Visual Basic и VBA в Excel 2007
Тип данных
Variant
(универсальный)
Object (объект)
Размер ячейки
(B — áàéò)
Для чисел
16
B
Для строк
2
2B+1B
на символ
4Â
Значения переменной/константы
или примечание
Значения соответствуют типу данных
Boolean, Byte, Integer, Long,
Currency, Single, Double или Date,
определяемому автоматически
Длина строки от 0 до 2
Используется при объявлении
объектов;
аналогичен типу Variant
31
символов
174

Приложение 2
Греческий алфавит
Строчная буква Заглавная буква Русское название
aA
bB
gG
dD
eE
zZ
hH
qQ
iI
kK
lL
mM
nN
xX
oO
pP
rR
sS
tT
uU
jF
cC
yY
wW
альфа alpha
áåòà beta
гамма gamma
дельта delta
эпсилон epsilon
дзета zeta
ýòà eta
òåòà theta
éîòà iota
каппа kappa
ламбда lambda
ìþ mu
íþ nu
êñè xi
омикрон omicron
ïè pi
ðî rho
сигма sigma
òàó tau
ипсилон upsilon
ôè phi
õè chi
ïñè psi
омега omega
Английское
название
175

Приложение 3
Основные математические
функции
Основные математические функции Visual Basic
Обращение к функции Возвращаемое значение
Abs(x)
Atn(x)
Cos(x)
Exp(x)
Fix(x)
Int(x)
Log(x)
Sgn(x)
Sin(x)
Sqr(x)
Tan(x)
Результат отбрасывания дробной части x
Наибольшее целое число, не превосходящее x
Натуральный логарифм ln x ïðè x >0
1, 0 èëè -1
tg x ïðè x ¹±
x
arctg x
cos x
x
e
в зависимости от знака x
sin x
ïðè x ³ 0
x
p/2
Операторы пересчета
Ниже приведены операторы Visual Basic, позволяющие рассчитывать значения тригонометрической функции ctg x, обратных
тригонометрических функций arcsin x, arccos x и arcctg x и десятичного логарифма lg x.
ctg_x = Cos(x) / Sin(x) 'åñëè Sin(x) <> 0
Const pi As Double = 3.141592654
176

Приложение 3. Основные математические функции
arcsin_x = Atn(x / Sqr(1-x^2)) 'åñëè Abs(x) <> 1
arcsin_x = Sgn(x) * pi / 2 'åñëè Abs(x) = 1
arccos_x = Atn(Sqr(1-x^2)/x) 'åñëè x <> 0
arccos_x = pi / 2 'åñëèx=0
arcctg_x = Atn(1 / x) 'åñëè x <> 0
arcctg_x = pi / 2 'åñëèx=0
lg_x = Log(x) / 2.302585093 'åñëèx>0
177

Приложение 4
Рекомендации по темам
контрольных работ
В конце данного приложения приведена таблица, которая содержит функции f(x) и соответствующие им отрезки [a, b] из работы [7], обладающие следующими свойствами:
· функция f(x) непрерывна и монотонна на отрезке [a, b];
· значения функции на левой и правой границах отрезка [a, b]
имеют разные знаки.
На основе этой таблицы легко составить 31 и более вариантов
заданий по программированию. Значения f(a), приведенные в таблице, нужны для отладки программ.
Ниже приводятся примеры заданий.
1. Разработать программу, которая èç четырех значений
yfa= (),fb(),fa b(. . )05 05+
чения, для которых выполняются следующие условия:
1) Fix(y) = CInt(y) è Fix(y) ¹ Int(y);
2) Int(y) = CInt(y) è Int(y) ¹ Fix(y);
Fix(y) = Int(y) = CInt(y) = Round(y);
3)
4) Fix(y) = Int(y) èëè Fix(y) ¹ CInt(y);
5) Fix(y) = CInt(y) èëè Fix(y) ¹ Int(y);
6) Int(y) = CInt(y) èëè Int(y) ¹ Fix(y);
7) Fix(y) = Int(y) èëè Fix(y) = CInt(y);
8) Int(y) = CInt(y) èëè Int(y) = Fix(y);
9) CInt(y) = Fix(y) èëè CInt(y) = Int(y);
10) Fix(y) = Int(y) è Fix(y) ¹ CInt(y).
,
05 05.() .()fa fb+
выбирает такие зна-
В качестве пользовательского интерфейса программы исполь-
зовать
щего не менее чем из 10 строк вида
стандартные окна Windows.
2. Разработать программу создания текстового файла, состоя-
f( )xf
=
ii
178

Приложение 4. Рекомендации по темам контрольных работ
ãäå xiè fi— числовые значения аргумента и функции;
i — номер числового значения, 0 £ i £ n;
x
= a; xn= b; x0< x1< x2< ... < x
0
n-2
< x
n-1
< xn.
3. Разработать программу расчета среднего значения функции
на отрезке [a, b] по формуле
fx()
fñð= (0.5f0+ f1+ f2+ ... + f
в которой фигурируют значения функции
n-2
+ f
n-1
+ 0.5fn)/n,
в равноотстоящих
fx()
точках отрезка [a, b]; значение n, превосходящее 100, задается.
В качестве пользовательского интерфейса программы использовать стандартные окна Windows.
4. Разработать программу нахождения точки минимума функ-
öèè
yx f x() ()=
2
на отрезке [a, b] и расчета значения функции y(x)
в найденной точке. Точку минимума искать путем «шагания» по
оси x с шагом h, не превосходящим 0.001. В качестве пользовательского интерфейса программы использовать форму, причем
шаг h должен относиться к исходным данным программы; при
h > 0.001 в форму должно выдаваться сообщение об ошибке.
5. Рассчитать значения функций
fx(),gx xfx() ()=
è
hx x f x() ()=
2
не менее чем в 10 точках отрезка [a, b] (включая a и b) следующими
методами:
1) разработав макрос с помощью макрорекордера;
2) разработав пользовательскую функцию Excel;
3) написав текст макроса на VBA.
Средствами Excel построить графики зависимостей
fx()
, g(x)è
h(x).
6. Разработать программу решения уравнения
fx()= 0
íà îò-
резке [a, b] методом деления отрезка пополам. Уравнение решать с
-3
заданной погрешностью h ïî x, не превосходящей 10
. В качестве
пользовательского интерфейса программы использовать форму,
причем погрешность h должна относиться к исходным данным
программы; при h > 10
-3
должно выдаваться сообщение об ошибке.
Для читателя, не знакомого с методом деления отрезка попо-
лам, приведем его описание.
Пусть fa è fb — значения функции f на соответствующих грани-
цах отрезка [a, b]; эти значения имеют разные знаки. Метод деления отрезка пополам работает следующим образом:
1) по формулам c = (a + b)/2 è fc = f(c) рассчитываются коорди-
ната середины отрезка [a, b] и значение функции в середине отрезка;
179

Г. З. Гарбер. Основы программирования на Visual Basic и VBA в Excel 2007
2) если совпадают знаки fc è fa, то смещается левая граница от-
резка [a, b]: полагается a = c è fa = fc; далее выполняется четвертый
пункт;
3) если совпадают знаки fc è fb, то смещается правая граница
отрезка [a, b]: полагается b = c è fb = fc;
4) повторяются три предыдущих пункта до тех пор, пока не вы-
полнится условие b - a < h;
5) при выполнении последнего условия процесс решения урав-
нения f(x) = 0 оканчивается; конечное значение c считается решением этого уравнения.
Задания, приведенные в данном приложении, могут быть использованы преподавателями при подготовке тем контрольных работ. Эти задания можно также использовать для самопроверки
при самостоятельном изучении материала книги.
Варианты заданий
¹
варианта
1
2
3
4
5
6
7
8
9
10
11
12
Функция f(x) Отрезок [a, b] Значение f(a)
(. sin ) .38 3 035--xx
13 36(sin(.))+-xx
cos .103
sin .104
0 25 1 2502
..xx--
2
01
.lnxxx-
34 5xx--ln
xx
ee
---2
xxx++-325.
tg x tg x tg x() ( ) ( ) .-+-
cos( ) sin()()221 1xxx-+
sin(ln ) cos(ln ) lnxx
3
--xx
2
--xx
3
35
3 5 0 3333333
x-+2
180
[2; 3] 0.3905776
[0; 0.85] 0.3333333
[0; 1] 0.5403023
[0; 1] 0.841471
[2; 3] -1.2502
[1; 2] 0.1
[2;
4] -1.772589
[0; 1] -2
[0.4; 1] -0.7307382
[0; 0.8] -0.3333333
[1; 2] -1.099089
[1; 3] -1
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
