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

Информационные системы и технологии в экономике

..pdf
Скачиваний:
0
Добавлен:
05.02.2023
Размер:
2.65 Mб
Скачать

Функции Asc(строка) и Chr(код) позволяют получить ASCII-код начальной буквы строки и, наоборот, по ASCII-коду получить соответствующую букву. Для функции Chr() код может принимать значения от 0 до 255. Значения от 0 до 31 соответствуют управляющим кодам

(например, Chr(13) вернёт символ перехода на новую строку). Для обозначения некоторых часто употребляемых клавиш в VBA имеются встроенные константы, например, для клавиши <Enter> – vbCr, для клавиши

<Tab> – vbTab, для клавиши <Backspace> – vbBack.

Примеры:

debug.Print Asc("F")

70

debug.Print Chr(97)

a

Msgbox "Этот текст расположен" & vbCr & "в две

строки".

Функция Len(строка) определяет длину строки.

Пример:

debug.Print Len("http://www.tusur.ru/")

20

Функции Left(строка, количество) и Right(строка, количество)

возвращают подстроки, состоящие из заданного количества соответственно первых и последних символов данной строки. Функция Mid(строка,

позиция, количество) возвращает подстроку, содержащую заданное количество символов, начиная с указанной позиции.

Пример:

debug.Print Left("http://www.tusur.ru", 4)

http

debug.Print Right("http://www.tusur.ru", 2)

ru

debug.Print Mid("http://www.tusur.ru", 12, 5)

31

tusur

Функции InStr([старт], строка1, строка2, [сравнение]) и

InStrRev(строка1, сторка2, [старт], [сравнение]) возвращают позицию первого вхождения строки2 в строку1, начиная соответственно с ее начала и с конца. Если вхождения нет, то возвращается 0. Параметр сравнение указывает способ сравнения строк, значения: 0 или vbBinaryCompare для двоичного сравнения, 1 или vbTextCompare для посимвольного сравнения без учета регистра.

debug.Print InStr(1, "Microsoft Office", "office",

vbTextCompare)

11

debug.Print InStr(1, "Microsoft Office", "office",

vbBinaryCompare)

0

Функции обработки даты и времени

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

Функции Date, Time и Now возвращают значения типа Variant (Date),

содержащие соответственно текущие дату, время и одновременно дату и время.

Пример:

debug.Print Date

20.10.2011

debug.Print Time

13:18:02

debug.Print Now

20.10.2011 13:18:02

32

Функции Hour(время), Minute(время), Second(время) и Day(дата),

Month(дата), Year(дата) возвращают значения типа Variant (Integer),

являющиеся целыми числами, которые представляют собой соответственно

час, минуту, секунду и день, месяц, год в значении даты.

Пример:

debug.Print Hour(Now), Minute(Now), Second(Now)

13 18 55

debug.Print Day(Now), Month(Now),

Year(Now)

20

10

2011

 

Функция DatePart(интервал, дата [, день_недели, неделя_года]

возвращает значение типа Variant (Integer), содержащее указанную часть даты. Параметр интервал – строковое значение, обозначающее какой временной интервал должен быть найден, допустимые значения – "yyyy" (год), "q" (квартал), "m" (месяц), "y" (день года), "d" (день месяца), "w" (день недели), "ww" (неделя), "h" (час), "m" (минута), "s" (секунда); параметр дата – дата, часть которой необходимо найти; параметры день_недели и неделя_года – необязательные параметры, указывающие первый день недели и первую неделю года.

Пример:

debug.Print DatePart("w", #01-01-2011#)

7

Функция DateDiff(интервал, дата1, дата2 [, день_недели,

неделя_года] возвращает значение типа Variant (Long), содержащее временной интервал между двумя датами. Параметр интервал – строковое значение, обозначающее какой временной интервал необходимо различать,

допустимые значения – "yyyy" (год), "q" (квартал), "m" (месяц), "y" (день года), "d" (день месяца), "w" (день недели), "ww" (неделя), "h" (час), "m" (минута), "s" (секунда); параметры дата1 и дата2 – две даты, разность между которыми необходимо найти; параметры день_недели и неделя_года –

33

необязательные параметры, указывающие первый день недели и первую

неделю года.

Пример:

debug.Print DateDiff("yyyy", #01-10-2000#, #01-09-

2011#)

11

Функция DateAdd(интервал, количество, дата) возвращает значение типа Variant (Date), содержащее дату, которой добавлено указанное количество времени. Параметр интервал – строковое значение,

обозначающее какой временной интервал необходимо добавить, допустимые значения – "yyyy" (год), "q" (квартал), "m" (месяц), "y" (день года), "d" (день месяца), "w" (день недели), "ww" (неделя), "h" (час), "m" (минута), "s" (секунда); параметр количество – число, обозначающее количество времени,

которое необходимо добавить к параметру дата.

Пример:

debug.Print DateAdd("yyyy", 5, #01-10-2000#)

10.01.2005

Некоторые функции проверки типов

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

Функция

Проверяемый тип

 

 

IsArray

если переменная является массивом – возвращает True,

 

иначе – False

 

 

IsDate

если переменная содержит дату – возвращает True, иначе –

 

False

 

 

IsEmpty

была ли переменная инициализирована – возвращает True,

 

иначе – False

 

 

IsNull

если переменная содержит какое-либо значение –

 

возвращает True, иначе – False

 

 

34

Функция

 

 

Проверяемый тип

 

 

 

 

IsNumeric

 

если переменная является числом – возвращает True, иначе

 

 

– False

 

 

 

 

Функции преобразования типов

 

 

 

 

Функция

Возвращаемый тип

 

 

 

 

CBool

 

 

Boolean

CByte

 

 

Byte

CCur

 

 

Currency

CDate

 

 

Date

CDbl

 

 

Double

CDec

 

 

Decimal

CInt

 

 

Integer

CLng

 

 

Long

CSng

 

 

Single

CVar

 

 

Variant

CStr

 

 

String

Форматирование значений разных типов

Функция Format(выражение [, формат, день_недели, неделя_года])

возвращает значение типа Variant (String), содержащее выражение,

отформатированное согласно заданному формату; параметры день_недели и неделя_года – необязательные параметры, указывающие первый день недели и первую неделю года.

Ниже перечислены некоторые форматы для представления значений.

Формат Описание

General Number Число без разделителя тысяч

Currency Число в денежном формате, используя настройки операционной системы

35

Формат

Описание

 

 

Fixed

Число, у которого отображается хотя бы одна цифра

 

слева и две справа от десятичного символа

 

 

Standard

Число, у которого отображается хотя бы одна цифра

 

слева, две справа от десятичного символа и разделитель

 

тысяч

 

 

Percent

Число в процентном формате с двумя цифрами справа от

 

десятичного символа

 

 

Scientific

Число в формате с плавающей точкой

 

 

Yes / No

No, если число равно 0, Yes в противном случае

 

 

True / False

False, если число равно 0, True в противном случае

 

 

On / Off

Off, если число равно 0, On в противном случае

 

 

General Date

Отображает дату или время

 

 

Long Date

Дата в полном формате

 

 

Medium Date

Дата в обычном формате

 

 

Short Date

Дата в сокращенном формате

 

 

Long Time

Время с часами, минутами и секундами

 

 

Medium Time

Время с часами и минутами в 12-часовом формате

 

 

Short Time

Время с часами и минутами в 24-часовом формате

 

 

Примеры:

 

debug.Print Format(456789.0123, "General Number")

456789,0123

debug.Print Format(456789.0123, "Currency")

456 789,01р.

debug.Print Format(456789.0123, "Fixed")

456789,01

debug.Print Format(456789.0123, "Standard")

456 789,01

debug.Print Format(456789.0123, "Scientific")

4,57E+05

36

debug.Print Format(#01-01-2011#, "General Date") 01.01.2011

debug.Print Format(#01-01-2011#, "Long Date") 1 Январь 2011 г.

debug.Print Format(#01-01-2011#, "Medium Date") 01-янв-11

debug.Print Format(#01-01-2011#, "Short Date") 01.01.2011

debug.Print Format(#13:50:50#, "Long Time") 13:50:50

debug.Print Format(#13:50:50#, "Medium Time") 01:50

debug.Print Format(#13:50:50#, "Short Time") 13:50

Если же нужного формата нет, можно настроить вид отображения выводимого значения при помощи пользовательских форматов с использованием специальных символов "0", "#", "%", ",", ":", "/", ("E+", "E–", "e+", "e–"), ("d", "m", "s"), ("h", "m", "s").

Примеры:

debug.Print Format(125 / 2, "###.###")

62,5

debug.Print Format(125 / 2, "000.000")

062,500

debug.Print Format(125 / 2, "#.##e+##")

6,25e+1

debug.Print Format(#01-01-2011#, "dd/mm/yy")

01.01.11

debug.Print Format(#13:50:50#, "hh:mm:ss")

13:50:50

37

Для форматирования чисел в VBA имеется отдельная функция

FormatNumber(число [, число_знаков, ведущий_ноль, отрицательные,

группировать]), где число – то число, которое нужно отформатировать;

число_знаков – параметр, задающий число знаков после десятичного символа (значения – vbTrue, vbFalse, vbUseDefault); ведущий_ноль

параметр, указывающий надо ли отображать нулевую целую часть (значения

– vbTrue, vbFalse, vbUseDefault); отрицательные – параметр, указывающий,

надо ли отображать отрицательные значения в скобках (значения – vbTrue, vbFalse, vbUseDefault); группировать – параметр, указывающий, надо ли группировать цифры (значения – vbTrue, vbFalse, vbUseDefault).

Примеры:

debug.Print FormatNumber(sin(5), 4)

-0,9589

debug.Print FormatNumber(sin(5), 4, vbFalse)

-,9589

debug.Print FormatNumber(sin(5), 4, vbFalse,

vbTrue)

(,9589)

Для форматирования процентов в VBA имеется отдельная функция

FormatPercent, которая имеет такой же синтаксис, как и FormatNumber.

Для форматирования денежных значений в VBA имеется отдельная функция FormatCurrency, которая имеет такой же синтаксис, как и

FormatNumber.

Для форматирования значений даты и времени в VBA имеется отдельная функция FormatDateTime(дата[, формат]), которая имеет такой же синтаксис, как и FormatNumber. где дата – параметр, задающий дату,

которую необходимо отформатировать; формат – необязательный параметр,

указывающий нужное форматирования (значения – vbGeneralDate, vbLongDate, vbShortDate, vbLongTime, vbShortTime).

38

Отладка, использование среды для отладки программ

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

Отладка программ – это проверка и внесение исправлений в программу при её разработке. Отладка позволяет идентифицировать ошибки,

допущенные при программировании (синтаксические – ошибки в выражениях и именах, и логические – в логике работы программы).

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

отказы аппаратуры, неправильные действия пользователя.

Типы ошибок. Ошибки в программе делятся на три категории:

Ошибки компиляции – возникают, когда компилятор не может интерпретировать введённый текст. Некоторые ошибки компиляции обнаруживаются при вводе, а другие – перед выполнением программы. Такие ошибки легко определить и исправить, поскольку VBA выявляет их автоматически, а сами ошибки очевидны.

Примечание. VBA автоматически компилирует программу каждый раз при запуске на выполнение после внесения изменений. Можно также запустить компиляцию командой Отладка – Компилировать.

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

39

Логические ошибки трудно заметить и устранить. Они не приводят к прекращению компиляции или выполнения, однако являются причиной того,

что программа не выдаёт желаемых результатов. Выявление таких ошибок производят путём тщательной проверки с помощью средств отладки VBA.

Средства отладки. В VBA имеется большое количество средств,

предназначенных для отладки программ. К ним относятся: использование оператора Option Explicit, пошаговое выполнение программы, работа в режиме прерывания, использование точек останова, вывод значений переменных.

Использование Option Explicit. Данный оператор описания требует явного задания переменных в программах. При его использовании возникает ошибка компиляции при неправильном написании имени переменной или использовании неописанной переменной. Кроме того, явное описание переменных позволяет обойтись без использования типа данных Variant и

связанных с его использованием ошибок при неявном приведении типов данных.

Пошаговое выполнение программы. Этот режим служит для локализации ошибок в теле программы. Для его запуска используются команды меню, клавиатура или панель инструментов Отладка,

отображаемая командой Вид - Панели инструментов - Отладка. В меню и на панели инструментов имеются четыре команды (кнопки) для выполнения программы в пошаговом режиме.

Команда Отладка – Шаг с заходом (клавиша <F8>) позволяет выполнить одну строку программы и перейти к следующей. Если следующая строка – вызов процедуры, то происходит переход к первому выполняемому оператору этой процедуры.

Команда Отладка – Шаг с обходом (клавиши <Shift+F8>) также выполняет одну строку программы, но если строкой является вызов процедуры, то она выполняется как одна инструкция. Данная команда используется, если известно, что эта процедура работает правильно.

40