Вбудовані функції і оператори
У мові VBA існує безліч вбудованих функцій і операторів. Вони
перераховані в табл. 7.1. Ми розглянемо ті з них, які використовуються
найчастіше.
Для спрощення опису ми використовуємо прийняті в Microsoft позначення, наприклад, для позначення необов'язкових параметрів будемо застосовувати квадратні дужки. Скажімо, в наступній процедурі другий параметр є необов'язковим:
Sub ChangeFormat (FontName [. FontSize[)
Зверніть увагу на те, що в даному випадку не зазначений тип даних. Втім, про це ми поговоримо пізніше.
Для спрощення опису ми використовуємо прийняті в Microsoft позначення, наприклад, для позначення необов'язкових параметрів будемо застосовувати квадратні дужки. Скажімо, в наступній процедурі другий параметр є необов'язковим:
Sub ChangeFormat (FontName [. FontSize[)
Зверніть увагу на те, що в даному випадку не зазначений тип даних. Втім, про це ми поговоримо пізніше.
Таблиця 7.1. Функції VBA
Abs
|
DoEvents
|
IsEmpty
|
Right
|
Array
|
Environ
|
IsError
|
RightB
|
Asc
|
EOF
|
IsMissing
|
Rnd
|
AscB
|
Error
|
IsNull
|
Round*
|
AscW
|
Exp
|
IsNumeric
|
RTrim
|
Atn
|
FileAttr
|
IsObject
|
Second
|
CallByName*
|
FileDateTime
|
Join*
|
Seek
|
Cbool
|
FileLen
|
Lbound
|
Sgn
|
Cbyte
|
Filter*
|
Lease
|
Shell
|
Ccur
|
Fix
|
Left
|
Sin
|
Cdate
|
Format
|
LeftB
|
SLN
|
CDbl
|
FormatCurrency*
|
Len
|
Space
|
Cdec
|
FormatDateTime*
|
LenB
|
Spc
|
Choose
|
FormatNumber*
|
LoadPicture
|
Split*
|
Chr
|
FormatPercent*
|
Loc
|
Sqr
|
ChrB
|
FreeFile
|
LOF
|
Str
|
ChrW
|
FV
|
Log
|
StrComp
|
Cint
|
GetAIISettings
|
Ltrim
|
StrConv
|
CLng
|
GetAttr
|
Mid
|
String
|
Command
|
GetAutoServerSettings
|
MidB
|
StrReverse*
|
Cos
|
GetObject
|
Minute
|
Switch
|
CreateObject
|
GetSettings
|
MIRR
|
SYD
|
CSng
|
Hex
|
Month
|
Tab
|
CStr
|
Hour
|
MonthName*
|
Tan
|
CurDir
|
I if
|
MsgBox
|
Time
|
Cvar
|
IMEStatus
|
Now
|
Timer
|
CVDate
|
Input
|
Nper
|
TimeSerial
|
CVErr
|
Inputs
|
NPV
|
TimeValue
|
Date
|
InputBox
|
Oct
|
Trim
|
DateAdd
|
InStr
|
Partition
|
TypeName
|
DateDiff
|
InStrB
|
Pmt
|
UBound
|
DatePart
|
InstrRev*
|
PPmt
|
UCase
|
DateSerial
|
Int
|
PV
|
Val
|
DateValue
|
Ipmt
|
QBColor
|
VarType
|
Day
|
IRR
|
Rate
|
WeekdayWeekdayname*
|
DDB
|
IsArray
|
Replace*
|
Year
|
Dir
|
Isdate
|
RGB
|
* — функции, помеченные этим значком, существуют только в пакете
Office 9/10
Функція Msg Box
Ви вже не раз стикалися з
функцією MsgBox раніше. Тепер поговоримо про неї більш докладно. Вона
використовується для виводу на екран інформаційного вікна, яке зникає після
того, як користувач натисне кнопку. Найчастіше опис цієї функції виглядає
наступним чином: MsgBox (prompt [.
Buttons[ [. Title[)
Це аж ніяк не повний опис синтаксису. Існують необов'язкові параметри, пов'язані з контекстом підказки, про які ви можете дізнатися в довідковій документації.
Prompt - параметр типу String, що містить повідомлення, яке показується в інформаційному вікні. Для створення повідомлення з декількох рядків використовується константа vbCrLf.
Buttons - параметр типу Long, що містить суму значень, які визначають різні властивості інформаційного вікна. Це число і тип показуваних кнопок, стиль значків, ідентичність заданих за замовчуванням кнопок і модальність вікна повідомлення. Модальне діалогове вікно (system modal dialog box) з'являється поверх всіх вікон, відкритих в даний момент, і саме в його поля здійснюється введення даних, в той час як режимне діалогове вікно (application modal dialog box) з'являється тільки поверх вікна додатка. Різні значення параметра Buttons показані в табл. 7.2. Вони ж формують перерахування VbMsgBoxStyle.
Наприклад, код MsgBox "Proceed?", vbQuestion + vbYesNo
призведе до появи інформаційного вікна, яке містить знак питання, напис Proceed? (Продовжувати?) І дві кнопки Yes (Так) і No (Ні). Його вигляд показаний на рис. 7.1.
Це аж ніяк не повний опис синтаксису. Існують необов'язкові параметри, пов'язані з контекстом підказки, про які ви можете дізнатися в довідковій документації.
Prompt - параметр типу String, що містить повідомлення, яке показується в інформаційному вікні. Для створення повідомлення з декількох рядків використовується константа vbCrLf.
Buttons - параметр типу Long, що містить суму значень, які визначають різні властивості інформаційного вікна. Це число і тип показуваних кнопок, стиль значків, ідентичність заданих за замовчуванням кнопок і модальність вікна повідомлення. Модальне діалогове вікно (system modal dialog box) з'являється поверх всіх вікон, відкритих в даний момент, і саме в його поля здійснюється введення даних, в той час як режимне діалогове вікно (application modal dialog box) з'являється тільки поверх вікна додатка. Різні значення параметра Buttons показані в табл. 7.2. Вони ж формують перерахування VbMsgBoxStyle.
Наприклад, код MsgBox "Proceed?", vbQuestion + vbYesNo
призведе до появи інформаційного вікна, яке містить знак питання, напис Proceed? (Продовжувати?) І дві кнопки Yes (Так) і No (Ні). Його вигляд показаний на рис. 7.1.
Таблиця 7.2. Значення аргументу Buttons функції MsgBox
Назначение
|
Константа
|
Значение
|
Описание
|
Типи кнопок
|
VbOKOnly
|
0
|
З'являється тільки кнопка OK
|
VbOKCancel
|
1
|
З'являються кнопки ОК і Cancel
|
|
vbAbortRetrylgnore
|
2
|
З'являються кнопки Abort, Retry і Ignore
|
|
vbYesNoCancel
|
3
|
З'являються кнопки Yes, No й Cancel
|
|
VbYesNo
|
4
|
З'являються кнопки Yes і No
|
|
vbRetryCancel
|
5
|
З'являються кнопки Retry і Cancel
|
|
Типм значків
|
VbCritical
|
16
|
Показується значок критичного повідомлення
|
VbQuestion
|
32
|
Показується знак питання
|
|
vbExclamation
|
48
|
Показується знак попереджуючого повідомлення
|
|
vblnfbrmation
|
64
|
Показується знак інформаційного повідомлення
|
|
Кнопки по замовчуванню
|
vbDefaultButtonl
|
0
|
За замовчуванням береться перша кнопка
|
vbDefaultButton2
|
256
|
За замовчуванням береться друга кнопка
|
|
vbDefaultButton3
|
512
|
За замовчуванням береться третя кнопка
|
|
vbDefaultButton4
|
768
|
За замовчуванням береться четверта кнопка
|
|
Модальність
|
vbApplicationModal
|
0
|
З'являється режимне вікно діалогу
|
vbSystemModal
|
4096
|
З'являється модальне вікно діалогу
|
Параметр title являє собою рядковий вираз, показуване в рядку
заголовка інформаційного вікна. Якщо цей аргумент пропустити, в рядку заголовка
з'явиться напис "Microsoft Excel", як на рис. 7.1.
Функція MsgBox повертає число, яке вказує, яку саме кнопку
натиснув користувач. Можливі повертаються значення можна знайти в табл. 7.3.
Крім того, вони об'єднані в перерахування VbMsgBoxResult.
Таблиця 7.3. Значення, що повертаються функції MsgBox
Константа
|
Значение
|
Описание
|
vbOK
|
1
|
Була натиснута кнопка ОК
|
vbCancel
|
2
|
Була натиснута кнопка Cancel
|
vbAbort
|
3
|
Була натиснута кнопка Abort
|
vbRetry
|
4
|
Була натиснута кнопка Retry
|
vblgnore
|
5
|
Була натиснута кнопка Ignore
|
vbYes
|
6
|
Була натиснута кнопка Yes
|
vbNo
|
7
|
Була натиснута кнопка No
|
Функція InputBox
Функція InputBox виводить на
екран вікно діалогу із запитом на введення даних користувачем. Найчастіше вона
описується таким чином: InputBox (prompt [,
title[ [, default[)
Змінна prompt задає повідомлення, показуване у вікні діалогу, а змінна title - повідомлення в рядку заголовка. Показуване за замовчуванням значення текстового поля визначається вмістом змінної default. Наприклад, код sName = InputBox("Enter your name.". "Name", "Albert")
призводить до появи діалогового вікна Name (Ім'я) з текстом Enter your name (Введіть ваше ім'я), показаного на рис. 7.2.
Змінна prompt задає повідомлення, показуване у вікні діалогу, а змінна title - повідомлення в рядку заголовка. Показуване за замовчуванням значення текстового поля визначається вмістом змінної default. Наприклад, код sName = InputBox("Enter your name.". "Name", "Albert")
призводить до появи діалогового вікна Name (Ім'я) з текстом Enter your name (Введіть ваше ім'я), показаного на рис. 7.2.
Рис. 7.2. Результат дії функції InputBox
Функція InputBox повертає рядок, яку користувач вводить в текстове поле. У нашому прикладі цей рядок буде містити змінна sName.
Цю функцію можна використовувати і для введення чисел. Повертану рядок, наприклад "12,55", можна перетворити в число 12,55 за допомогою функції Val, про яку ми поговоримо трохи пізніше.
Функції для обробки рядків
Ось набір функцій,
застосовуваних до рядків, що містять як константи, так і змінні
Функція Len
Функція Len повертає довжину рядка, тобто кількість вхідних в неї символів. Відповідно, код Len ("January Invoice") поверне значення 15.
Функція Len повертає довжину рядка, тобто кількість вхідних в неї символів. Відповідно, код Len ("January Invoice") поверне значення 15.
Функції Ucase і LCase
Функції UCase і LCase міняють регістр літер у рядку на верхній або нижній відповідно. Код виглядає наступним чином:
UCase (string)
LCase (string)
Наприклад, код
MsgBox UCase ("Donna")
поверне рядок DONNA.
Функції UCase і LCase міняють регістр літер у рядку на верхній або нижній відповідно. Код виглядає наступним чином:
UCase (string)
LCase (string)
Наприклад, код
MsgBox UCase ("Donna")
поверне рядок DONNA.
Функції Left, Right і Mid
Функції Left, Right і Mid повертають частину рядка. Зокрема, код Lefttstring. number)
повертає число number символів з початку рядка string. Код
Right (string. number)
повертає число number символів з кінця рядка string. Наприклад, код
MsgBox Right ("Donna Smith". 5) повертає значення Smith.
Функція Mid описується таким чином: Mid (string, start, length)
Вона повертає число знаків length рядки string, починаючи з позиції start. Наприклад, код
Mid ("Library.xls", 9,3) повертає значення xls. Якщо пропустити параметр length, наприкладMid("Library.xls",9)
буде повернений залишок рядка, починаючи з позиції start.
Функції Left, Right і Mid повертають частину рядка. Зокрема, код Lefttstring. number)
повертає число number символів з початку рядка string. Код
Right (string. number)
повертає число number символів з кінця рядка string. Наприклад, код
MsgBox Right ("Donna Smith". 5) повертає значення Smith.
Функція Mid описується таким чином: Mid (string, start, length)
Вона повертає число знаків length рядки string, починаючи з позиції start. Наприклад, код
Mid ("Library.xls", 9,3) повертає значення xls. Якщо пропустити параметр length, наприкладMid("Library.xls",9)
буде повернений залишок рядка, починаючи з позиції start.
Функції InStr, InStrRev
Синтаксис дуже корисної функції InStr виглядає наступним
чином:
Instr (Start. StringToSearch. StringToFind)
Вона знаходить входження одного текстового рядка (StringToSearch) в інший текстовий рядок (StringToFind) і повертає положення початку шуканого тексту щодо крайнього лівого знака проглядається тексту. Змінна Start вказує позицію знака, з якою слід починати пошук. Якщо цей аргумент пропущено, він вважається рівним 1. Наприклад, код MsgBox Instrd. "Donna Smith". "Smith")
повертає значення 7, так як слово Smith починається з сьомої позиції рядка Donna Smith.
Функція InStrRev відрізняється тільки тим, що пошук ведеться у зворотному напрямку рядки StringToSearch.
Instr (Start. StringToSearch. StringToFind)
Вона знаходить входження одного текстового рядка (StringToSearch) в інший текстовий рядок (StringToFind) і повертає положення початку шуканого тексту щодо крайнього лівого знака проглядається тексту. Змінна Start вказує позицію знака, з якою слід починати пошук. Якщо цей аргумент пропущено, він вважається рівним 1. Наприклад, код MsgBox Instrd. "Donna Smith". "Smith")
повертає значення 7, так як слово Smith починається з сьомої позиції рядка Donna Smith.
Функція InStrRev відрізняється тільки тим, що пошук ведеться у зворотному напрямку рядки StringToSearch.
Функція Replace
Функція Replace, відсутнлатити в Excel 97,
використовується для заміни одного набору знаків в рядку іншим. Наприклад,
код: MsgBox Replace ("the car is red", "red",
"blue") повертає рядок "the car is blue".
Функції Str і Val
Функція Str перетворює число в рядок. Наприклад,
код: Str (123)
повертає рядок 123. Функція Val має зворотне призначення, тобто перетворює рядок у число, з яким потім можна, наприклад, виконувати арифметичні операції. Скажімо, код Val ("4,5")
повертає число 4,5, а код Val ("1234 Main street")
повертає число 1234. Майте на увазі, що ця функція не розпізнає знак долара ($) і знак коми. Відповідно, код Val ($12)
поверне значення 0, а не 12.
повертає рядок 123. Функція Val має зворотне призначення, тобто перетворює рядок у число, з яким потім можна, наприклад, виконувати арифметичні операції. Скажімо, код Val ("4,5")
повертає число 4,5, а код Val ("1234 Main street")
повертає число 1234. Майте на увазі, що ця функція не розпізнає знак долара ($) і знак коми. Відповідно, код Val ($12)
поверне значення 0, а не 12.
Функції Trim, LTrim і RTrim
Функція LTrim видаляє перші пробіли рядка. Відповідно,
функція RTrim видаляє останні пробіли рядка. А функція Trim видаляє перший і
останній пробіли одночасно. Наприклад, код Trim ("extra
") повертає слово extra.
Функції String і Space
Функція String дозволяє швидко створити рядок, що
складається з одного символу, повтореного задане число разів. Наприклад,
код sText = String (25, "В") поміщає в змінну sText рядок,
що містить 25 літер В. Функція Space повертає рядок, що складається із заданого
числа прогалин. Тобто код
sText = Space (25) привласнює змінної sText рядок з 25 пробілів.
sText = Space (25) привласнює змінної sText рядок з 25 пробілів.
Оператор Like і функція StrCmp
Оператор Like украй корисний при порівнянні двох рядків.
Зрозуміло, для цього можна використовувати знак рівності, і вираз String1=
String2 буде мати значення True при ідентичності двох рядків. Однак
оператор Like дозволяє проводити порівняння з урахуванням регістра букв або
перевіряти схожість з певним зразком. Вираз: string Like pattern повертає
значення True, якщо рядок string відповідає заданим зразком pattern, і значення
False у противному випадку. В дійсності вираз також може повернути результат
Null. Тип порівнянної рядка, який використовує оператор Like, залежить від
параметрів оператора Option Compare. У даному випадку існують два варіанти, які
розміщуються в розділі опису модуля (в тому ж місці, де і оператор Option
Explicit):
Option Compare Binary
Option Compare Text
За замовчуванням використовується перший варіант. При цьому порівняння символів рядка здійснюється у відповідності з кодом ANSI, як показано нижче:
А<В<... Якщо ж обраний варіант Option Compare Text, порівняння проводиться без урахування регістру літер, в залежності від локальних налаштувань вашого комп'ютера. Це наступний порядок порівняння символів:
A = a. При цьому останнім у порядку сортування тексту є символ "[", код ANSI якого дорівнює 91. Це корисно знати, якщо потрібно помістити останній пункт в алфавітному порядку, - просто укладете його в квадратні дужки.
Функції оператора Like дозволяють використовувати групові символи, а також списки і діапазони символів. Наприклад, знак питання? використовується для позначення довільного символу. Знак * означає групу символів. Знак # замінює будь-яку цифру від 0 до 9. Для пошуку збігів з будь-яким одиничним символом в списку charlist використовується позначення [charlist]. Якщо ж потрібно знайти збіг з будь-яким одиничним символом поза списком charlist, скористайтеся позначенням [Icharlist],
Більш детальну інформацію можна знайти в довідкових файлах редактора VBА.
Функція StrCmp також використовується для порівняння двох рядків. Її опис виглядає наступним чином: StrComp(string1, string2 [, compare[)
Повертане їй значення показує співвідношення між рядками string1 і string2. Це може бути значення більше, менше або дорівнює.
Option Compare Binary
Option Compare Text
За замовчуванням використовується перший варіант. При цьому порівняння символів рядка здійснюється у відповідності з кодом ANSI, як показано нижче:
А<В<... Якщо ж обраний варіант Option Compare Text, порівняння проводиться без урахування регістру літер, в залежності від локальних налаштувань вашого комп'ютера. Це наступний порядок порівняння символів:
A = a. При цьому останнім у порядку сортування тексту є символ "[", код ANSI якого дорівнює 91. Це корисно знати, якщо потрібно помістити останній пункт в алфавітному порядку, - просто укладете його в квадратні дужки.
Функції оператора Like дозволяють використовувати групові символи, а також списки і діапазони символів. Наприклад, знак питання? використовується для позначення довільного символу. Знак * означає групу символів. Знак # замінює будь-яку цифру від 0 до 9. Для пошуку збігів з будь-яким одиничним символом в списку charlist використовується позначення [charlist]. Якщо ж потрібно знайти збіг з будь-яким одиничним символом поза списком charlist, скористайтеся позначенням [Icharlist],
Більш детальну інформацію можна знайти в довідкових файлах редактора VBА.
Функція StrCmp також використовується для порівняння двох рядків. Її опис виглядає наступним чином: StrComp(string1, string2 [, compare[)
Повертане їй значення показує співвідношення між рядками string1 і string2. Це може бути значення більше, менше або дорівнює.
Інші функції і оператори
З безлічі функцій мови VBA ми зупинимося на функціях Is, що
визначають атрибути змінної або об'єкта, функціях перетворення й функціях IIf і
Switch, які повертають умовний результат.
Функції Is
Мова VBA містить ряд функцій Is, що повертається значення яких
вказує, чи виконується певна умова стосовно аргументу. Ви вже стикалися з
функцією IsMissing в одному з попередніх вправ. Ось ще кілька функцій з цього ж
сімейства.
Функція IsDate
Ця функція вказує, чи можна перетворити вираз в дату.
Призначення цієї функції для комірки приводить до оцінки її вмісту. Якщо вміст
комірки є датою, функція повертає значення True. Наприклад, код IsDate
(Range ("F3"))
поверне значення True, якщо в комірку F3 знаходиться дата.
поверне значення True, якщо в комірку F3 знаходиться дата.
Функція IsEmpty
Функція IsEmpty вказує, чи була змінна-аргумент
ініціалізований і чи містить виділена комірка якесь значення. Наприклад,
код If IsEmpty (Range ("A1")) Then ... перевіряє, чи є щось
в комірці А1 або ж вона порожня.
Функція IsNull
Функція IsNull перевіряє, чи має змінна значення Null.
Змінні з цим значенням не містять даних. Майте на увазі, що код If var =
Null Then
завжди буде повертати значення False, так як більшість виразів, що містять значення Null, автоматично повертають у якості результату False. Якщо змінна var має значення Null, правильніше буде написати: If IsNull (var) Then
завжди буде повертати значення False, так як більшість виразів, що містять значення Null, автоматично повертають у якості результату False. Якщо змінна var має значення Null, правильніше буде написати: If IsNull (var) Then
Функція IsNumeric
Функція IsNumeric вказує, чи є аргумент числом. Наприклад,
якщо комірка А1 містить дані 123 (навіть якщо вони відформатовані як текст), то
умова: If IsNumeric (Range ("A1")) Then
буде виконано. З іншого боку, якщо в комірці міститься текст 123 Main Street, буде повернуто значення False.
буде виконано. З іншого боку, якщо в комірці міститься текст 123 Main Street, буде повернуто значення False.
Функція Immediate If
Опис функції Immediate If має наступний синтаксис IIf
(Expression, TruePart, FalsePart)
Якщо параметр Expression має значення True, буде повернуто значення TruePart. В іншому випадку функція поверне значення FalsePart. Наприклад, наступний код призводить до появи інформаційного вікна, у якому вказується на те, чи є порожній перша комірка активного аркуша.
Dim rng As Range
Set rng = ActiveSheet.Rows (1)
MsgBox IIf (IsEmpty (ActiveSheet.Cells (1, 1)), "Комірка порожня", "Комірка не порожня")
Слід розуміти, що функція Immediate If завжди оцінює обидва аргументи - TruePart і FalsePart - хоча і повертає тільки один з них. При цьому можна зіткнутися з побічним ефектом. Наприклад, розглянемо код
х = 0
у = IIf (x = 0, х ^ 2, 1 / х)
Він поверне помилку «поділ на нуль», незважаючи на те, що функція повертає результат 1 / х тільки в тому випадку, коли х не дорівнює нулю. Але функція оцінює цей вираз в обох випадках, в тому числі і коли х = 0.
Якщо параметр Expression має значення True, буде повернуто значення TruePart. В іншому випадку функція поверне значення FalsePart. Наприклад, наступний код призводить до появи інформаційного вікна, у якому вказується на те, чи є порожній перша комірка активного аркуша.
Dim rng As Range
Set rng = ActiveSheet.Rows (1)
MsgBox IIf (IsEmpty (ActiveSheet.Cells (1, 1)), "Комірка порожня", "Комірка не порожня")
Слід розуміти, що функція Immediate If завжди оцінює обидва аргументи - TruePart і FalsePart - хоча і повертає тільки один з них. При цьому можна зіткнутися з побічним ефектом. Наприклад, розглянемо код
х = 0
у = IIf (x = 0, х ^ 2, 1 / х)
Він поверне помилку «поділ на нуль», незважаючи на те, що функція повертає результат 1 / х тільки в тому випадку, коли х не дорівнює нулю. Але функція оцінює цей вираз в обох випадках, в тому числі і коли х = 0.
Функція Switch
Синтаксис функції Switch виглядає наступним
чином: Switch (expr1, value1, Expr2, Value2, ... exprN. ValueN)
де exprN і valueN - вирази. Для роботи функції потрібно всього одна пара «вираз-значення», але дія функції буде більш наочним, якщо є принаймні дві такі пари.
Якщо вираз exprn має значення True, функція Switch поверне відповідне значення valuen. Як і у випадку з функцією IIf, відбувається оцінка всіх виразів. Якщо жодне з них не має значення True, функція повертає значення Null. Для перевірки в цьому випадку використовується функція IsNull
У лістингу 7.1 по розширенню файлу визначається його тип: Template, Workbook або Add-in.
де exprN і valueN - вирази. Для роботи функції потрібно всього одна пара «вираз-значення», але дія функції буде більш наочним, якщо є принаймні дві такі пари.
Якщо вираз exprn має значення True, функція Switch поверне відповідне значення valuen. Як і у випадку з функцією IIf, відбувається оцінка всіх виразів. Якщо жодне з них не має значення True, функція повертає значення Null. Для перевірки в цьому випадку використовується функція IsNull
У лістингу 7.1 по розширенню файлу визначається його тип: Template, Workbook або Add-in.
Лістинг 7.1. Функція Switch
Sub ShowFilеТуре (FileExt As String)
Dim FileType As Variant
FileType = Switch(FileExt = "xlt", "Template", FileExt = "xls", "Workbook", FileExt = "xla", "Addin")
'Показ результату
If Not IsNull(FileType) Then
MsgBox FileType
Else
MsgBox "Неопізнаний тип"
End If
End Sub
Dim FileType As Variant
FileType = Switch(FileExt = "xlt", "Template", FileExt = "xls", "Workbook", FileExt = "xla", "Addin")
'Показ результату
If Not IsNull(FileType) Then
MsgBox FileType
Else
MsgBox "Неопізнаний тип"
End If
End Sub
Цей код містить один нюанс. Так як функція Switch може повернути значення Null, ми не можемо використовувати для значення, що повертається тип String, що, на перший погляд, виглядає цілком природно: Dim FileType As String
FileType = Switch(FileExt = "xlt", "Template", FileExt = "xls", "Workbook", FileExt = "xla", "Addin")
Цей варіант коду цілком має право на життя, якщо змінна FileType має значення xlt, xls або xla. В іншому випадку буде отримано повідомлення про помилку Invalid use of Null. Саме тому в описі змінна FileType відноситься до типу Variant, що дає можливість привласнювати їй різні типи даних, у тому числі і ключове слово Null. Втім, проблеми можна уникнути за допомогою оператора Select Case, про який ми поговоримо в наступному розділі.
Перетворення одиниць вимірювання
Функція InchesToPoints перетворить кількість дюймів у
кількість точок. В Excel часто доводиться вводити значення в точках, в той час
як більшість користувачів звикло до величин в дюймах. В одному дюймі міститься
72 точки.
Ця функція особливо корисна при роботі з властивостями положення, наприклад Тор або Left. Так, властивість Тор об'єкта Chart визначає положення верхньої частини діаграми. Це положення відміряється в точках, починаючи з першого ряду аркуша.
Відповідно, щоб зробити його значення рівним 0,25 дюйма, потрібно написати:
ActiveChart.ChartObject.Top= InchesToPoints(25)
Існує також зворотна функція PointsToInches, без якої не обійтися, якщо функція повертає значення в точках, а не в дюймах.
Ця функція особливо корисна при роботі з властивостями положення, наприклад Тор або Left. Так, властивість Тор об'єкта Chart визначає положення верхньої частини діаграми. Це положення відміряється в точках, починаючи з першого ряду аркуша.
Відповідно, щоб зробити його значення рівним 0,25 дюйма, потрібно написати:
ActiveChart.ChartObject.Top= InchesToPoints(25)
Існує також зворотна функція PointsToInches, без якої не обійтися, якщо функція повертає значення в точках, а не в дюймах.
Оператор Beep
Оператор Beep подає сигнал через внутрішній динамік
комп'ютера. Він корисний, якщо потрібно привернути увагу користувача. Однак
результат залежить від апаратного забезпечення вашого комп'ютера, і в деяких
випадках застосування даного оператора не дасть ніякого результату. Тому бажано
попереджати користувачів про його наявність в коді програми. У загальному
випадку для цього найкраще використовувати рядок стану Excel, що робиться за
допомогою властивості StatusBar об'єкта Application.
Список використаних джерел
1. Использование макросов в Excel. 2-е изд. / С. Роман. — СПб.:
Питер, 2004. — 507 е.: ил.
Немає коментарів:
Дописати коментар