Текст програми це набір інструкцій (команд), які можуть бути виконані комп'ютером. Текст програми записується на мові програмування, у даній лабораторній роботі це мова Visual Basic
Вид материала | Документы |
- Розділ лінійні програми вступ поняття програми. Мова програмування середовище програмування., 1210.78kb.
- Лекція 18 "Інформатика та комп'ютерна техніка" Тема Мова програмування Visual Basic, 127.14kb.
- Комплекс програм, які використовуються для роботи з комп'ютером, називається програмним, 156.82kb.
- Анкета участника международной научно-практической конференции «актуальные проблемы, 62.51kb.
- Програма записується в окремому exe-файлі. Таким чином, програма це алгоритм, який, 2029.88kb.
- Авторські права на текст програми "Українська мова, 5-12 кл." належать Міністерству, 573.15kb.
- Опис програми та даних 8 Тестування 9 Список літератури 10 Додаток (роздрук програми), 90.22kb.
- Даний курс призначений для тих, хто: ніколи не програмував, але хоче навчитися, 360.9kb.
- Якщо відзначений кінець програми, то її виконання завершується. Якщо відзначений кінець, 131.52kb.
- Освітньо-професійної програми підготовки бакалаврів з напряму підготовки "Комп’ютерна, 406.58kb.
Інформатика та комп’ютерна техніка MS Excel
Лабораторна робота №11: " Мова програмування Visual Basic в застосуванні до MS EXCEL "
Мета роботи: Засвоїти основні принципи програмування та налагоджування програм. Навчитися використанню автозапису макросів для автоматизації розробки програмних додатків у MS EXCEL.
1.Теоретичні відомості
1.1.Терміни та визначення
- Текст програми – це набір інструкцій (команд), які можуть бути виконані комп'ютером. Текст програми записується на мові програмування, у даній лабораторній роботі це мова Visual Basic у орієнтації на створення додатків до системи Excel (VBA).
- Розробка програми – складається з підготовки тексту програми, його трансляції та налагоджування. У Excel для розробки використовується загальне для всіх компонентів MS Office середовище програмування Visual Basic. Воно містить текстовий редактор, транслятор, налагоджувач та довідкову систему.
- Трансляція програми – обробка тексту програмою – транслятором для перетворення у внутрішню форму (машинний код або внутрішнє уявлення) для ефективного виконання. Під час трансляції перевіряється правильність тексту і виводяться повідомлення про помилки. Як правило, курсор встановлюється на місце, де транслятор знайшов помилку, і виводиться повідомлення про її характер.
- Виконання програми – поступове виконання команд, записаних у тексті програми і (можливо) перетворених у машинний код. При виконанні можуть мати місце помилки, які не були виявлені на етапі трансляції. Наприклад – відсутність належних даних, хибність алгоритму тощо. Для пошуку та усунення таких помилок застосовується покрокове виконання програми з перевіркою проміжних результатів засобами налагоджувача.
- Макрос – це текст програми, що замінює ручний ввід команд. У Excel використовується для автоматизації обробки електронних таблиць, програмування діалогів тощо. Макрос завжди має ім'я, завдяки якому його може бути викликано на виконання. Макроси можуть бути параметризовані, тобто мати список параметрів, через який отримують вихідні дані та повертають результати обчислень. Наприклад, макрос
Розрахунок_рентабельності( Назва_підприємства, Норма_відрахувань, Коефіцієнт ) має ім'я Розрахунок_рентабельності і два параметри, що розділяються комою. Він розраховує коефіцієнт рентабельності для заданого у першому параметрі підприємства виходячи з норми відрахувань (другий параметр). Результат повертається у змінній "Коефіцієнт".
Необов'язково всі необхідні для розрахунків дані мають передаватися через параметри, вони можуть братися макросом з робочих аркушів книги Excel, глобальних змінних і констант тощо.
Макроси складаються з керуючих структур VBA, арифметичних та логічних виразів, викликів інших макросів, об'явлення констант та змінних, інших команд.
Макроси VBA поділяються на два види – процедури і функції.
- Функція – це такий макрос, ім'я якого може використатися як змінна, що повертає результат розрахунків. Він може використовуватися як функція робочого листа, але його не може бути назначено команді меню, кнопці та іншим елементам керування.
- Процедура – це макрос, що на відміну від функції не повертає результати через своє ім'я і через те не може використовуватися як функція робочого листа. Але якщо він не має параметрів, його можна призначати елементам керування.
- Константи – це явно задані або означені дані. Вони об'являються зі словом Const. Наприклад, Const Пи_5 = 3.14159, Const Имя1 = "Всеволод". Тут Пи_5, Имя1 – найменування констант, а 3.14159, "Всеволод" – їх значення. Константи не можуть зміняти своїх значень при виконанні макросу.
- Змінні – це дані, значення яких можна змінювати при виконанні макросу. Вони об'являються зі словом Dim. Змінні мають тип. Наприклад Dim I27 As Integer, Dim Пи_8 as Double. Тут I27, Пи_8 – найменування змінних, а Integer, Double – їх тип.
- Об’єкти VBA – це такі програмні одиниці, що містять у себе і дані і процедури їх обробки. Багато з них мають візуальне відображення на екрані: комірки таблиці, робочі листи, панелі керування і навіть Excel в цілому – все це є екземпляри базових об'єктів. Об'єкти можуть бути вкладені один в одного, до них можна звертатися з мови програмування VBA.
- Властивості об’єкту VBA – це константи і змінні, що належать екземпляру об'єкта і несуть у себе дані про цей конкретний екземпляр. Наприклад, розмір та колір окремої комірки, формула, що в неї записана, значення тій формули і багато іншого є властивостями об'єкту "комірка".
- Методи об’єкту VBA – це макроси (процедури і функції), що зв'язані з об'єктом і можуть виконуватися над значеннями властивостей його екземплярів. Наприклад, метод Activate робить комірку, до якої він належить, активною. Методи і властивості записуються після назви об'єкту через крапку. Оскільки в результаті виконання методів можуть виникати нові екземпляри об'єктів або посилання на вже існуючі екземпляри, до них теж можна застосовувати методи. Тому мають сенс і часто використовуються ланцюжки типу Об'єкт.Метод1.Метод2.Метод3...
- Автозапис макросу – це такий режим роботи Excel, коли всі дії користувача автоматично запам'ятовуються у вигляді макросів. Використовується для автоматизації програмування на VBA. Після завершення автозапису макрос може бути неодноразово виконано. Тоді він відтворює всі дії користувача, що були записані. Але, як правило, записаний автоматично макрос потребує деяких корекцій та налагодження.
- Налагоджувач – це компонента середовища програмування, яка забезпечує контроль за виконанням програми і дозволяє перевіряти результати виконання кожної команди окремо.
- Налагодження програми – це перевірка команд, з котрих складена програма, їх покрокове виконання на тестових даних і виправлення тексту програми, якщо отримані результати розбігаються з бажаними.
- Контрольна точка – це відмітка команди, на якої виконання програми повинне автоматично зупинитися. Використовується при налагоджуванні для контролю проміжних результатів розрахунків.
1.2.Питання, на які треба звернути увагу при виконанні роботи
- Як виконується автозапис макросу?
- Як викликати макрос на виконання, як призначити його комбінації гарячих клавіш, кнопкам панелі керування, командам меню?
- Яку структуру має текст макросів, і як вносяться корективи до цього тексту?
- Які атрибути і методи доступні для використання у об'єктах VBA: комірка, область, елемент керування, сторінка, книга, застосування. Яки властивості перелічених об'єктів носять загальний характер?
- Які типи даних існують у VBA та їх призначення. Як об'явити змінні для збереження числових та текстових даних, групи однорідних даних?
- Як записуються та використовуються оператори розгалуження, вибору і циклу?
- Як записуються та використовуються процедури і функції?
- Які стандартні процедури та функції існують у VBA, їх призначення і використання?
- Як користуватися налагоджувачем VBA, виконувати трасування програми та спостереження даних?
- Як виводити контрольні повідомлення при виконанні програми?
2.Порядок виконання роботи
- Робота починається з виклику MS EXCEL. Розпочніть нову книгу і запам’ятайте її у каталозі STUDENT під назвою LAB_11.XLS. Назвіть перший робочий лист “Автозапис”.
- Виконайте автозапис макросу "Желтый_фон", що розфарбовує область комірок з А1 до В3 у жовтий колір.
- Для цього включить режим автозапису макросів (Сервис/Макрос/Начать запись). З'явиться діалогове вікно запису макросів. В нього у поле "Имя макроса" введіть назву Желтый_фон і натисніть кнопку "ОК". З'явиться маленька піктограма керування записом з однією кнопкою – "Остановить запись". Тепер виконайте звичайні дії по фарбуванню комірок: виділіть область А1: В3 та зробіть заливку фона жовтим кольором. Зупиніть автозапис – натисніть кнопку "Остановить запись".
Розкройте діалогове вікно Сервис/Макрос/Макроси… і натиснить кнопку “Изменить”. Текст макросу з'явиться у Редакторі Visual Basic:
'
' Желтый_фон Макрос
' Макрос записан …
'
'
Sub Желтый_фон()
Range("A1:B3").Select
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End Sub
- Розберіть текст макросу, що було записано.
Спочатку йде коментар до макросу: коли й ким його записано. Кожен рядок коментарю починається з апострофа.
Потім заголовок макросу Sub Желтый_фон(). Тут Sub – службове слово, що свідчить про початок заголовку, Желтый_фон – назва макросу, () – перелік параметрів, у даному разі порожній.
Наступний рядок Range("A1:B3").Select – це команда VBA до виділення діапазону A1:B3.
Команди With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
виконують рівномірну (.Pattern = xlSolid ) заливку фону (Interior) виділеного діапазону (Selection) жовтою фарбою (.ColorIndex = 6).
Рядок End Sub завершує наданий макрос.
- Записаний автоматом макрос не є універсальним, він завжди виконує тільки ту операцію, що зроблена вами при записі, і тільки над тими комірками, що були вами використані. Щоб переконатися у цьому, перейдіть на другий аркуш книги (скоріш за все це буде аркуш "Лист2") і викличте записаний макрос на виконання. Для цього ввійдіть в меню "Сервис/Макрос/Макроси… ", розшукайте у списку назву Желтый_фон і двічі натисніть на ліву кнопку мишки – макрос буде виконано і він зафарбовує тільки одну, наперед запрограмовану область A1:B3 у заданий колір з номером 6.
Спробуйте виправити текст макросу так, щоб він фарбував у жовтий колір будь-яку виділену область. Для цього поверніться до тексту макросу і зверніть увагу на оператор Range("A1:B3").Select. Саме він виконує виділення діапазону A1:B3, а це нам заважає. Закоментуйте цей рядок, тобто встановіть в його началі апостроф. Тепер дія почнеться з команди With Selection.Interior, тобто буде виконана для любої наперед заданої області. Перевірте це, виконавши виправлений макрос.
- Самостійно виправте текст макросу так, щоб він розфарбовував виділену область у синій колір і водночас змінював розмір шрифту до 12-го.
- Навчіться призначати виконання макросів гарячим клавішам та командам меню.
Для призначення макросу комбінації клавіш знов ввійдіть в меню "Сервис/Макрос/Макроси…" і натисніть кнопку "Параметры". З'явиться панель діалогу "Параметры макроса". Встановіть курсор у віконце з написом "Ctrl+" і натисніть на ліву кнопку мишки. Тепер це віконце готове до прийняття даних. Введіть у нього одну літеру, наприклад "g". Тепер натискання комбінації клавіш "Ctrl-g" завжди буде виконувати цей макрос.
Для призначення макросу команді меню ввійдіть у діалог “Вид/Панели инструментов/Настройка/Команды/Макросы”, перенесіть пункт “Настраиваемая команда меню” в меню “Сервис”, натисніть праву кнопку мишки, оберіть команду “Назначить макрос” і виберіть потрібний макрос.
Для відміни виконаних призначень достатньо просто витерти назву літери у діалогу "Параметры макроса", та у режимі “Настройка” перетягти непотрібний пункт за межи меню. Обережно, не зіпсуйте меню!
- Самостійно розберіть призначення макросів кнопкам користувача на панелях керування.
- Наступне завдання пов'язане вже із справжнім програмуванням: Треба створити макрос, котрий би розраховував і записував у активну комірку площу прямокутника, довжина сторін якого задана у комірках А1 та В1 поточного робочого листа.
Щоб виконати це завдання, слід розібратися з тим, що таке є об'єкти VBA, і котрі з них стануть на користь при розробці заданої програми.
По перше нам знадобиться об'єкт, що є поточним листом. Назва такого об'єкту вже зарезервована у VBA, це ActiveSheet, тобто активний робочий лист.
Тепер треба побудувати конструкцію, що вказує на конкретну комірку цього листа. У явному вигляді такого об'єкту у VBA не існує, але у об'єкта ActiveSheet є метод Range(A), що при виконанні дає множину екземплярів об'єкту Cell, тобто комірок, з вказаного інтервалу A. Таким чином вираз ActiveSheet.Range("A1") і є потрібна нам комірка А1 поточного аркушу, а ActiveSheet.Range("B1") - комірка B1. По аналогії, ActiveCell є активна комірка того ж аркушу.
Але ж нам потрібні не самі комірки, а дані. що в них зберігаються. Щоб отримати їх, скористуємося властивістю Value об'єкта Cell.
Як результат попередніх міркувань, запишіть потрібний макрос:
Sub Площадь()
ActiveCell.Value = ActiveSheet.Range("A1").Value * ActiveSheet.Range("B1").Value
End Sub
Занесіть у комірку А1 листа “Автозапис” число 5, у В1 – число 7, активізуйте комірку С2 і викличте цей макрос на виконання. При правильному обчисленні у комірці С2 має з'явитися результат 35.
- Створений макрос має одну незручність – він бере вихідні дані з фіксованих комірок А1 та В1. Якщо Вам треба оперативно обчислити дані, розташовані у будь-яких комірках, більш плідною є ідея автоматичного розрахунку адрес комірок з вихідними даними.
Щоб опанувати такий прийом, скопіюйте макрос Площадь() і надайте йому ім'я Площадь2().
Нехай довжина сторін прямокутника буде братися з комірок, що розташовані ліворуч від активної. Тоді для здобуття даних треба розрахувати координати цих комірок і використати їх у формулі. Це можна зробити за допомогою методів Row і Column об'єкта Cell, що повертають відповідні координати комірки. Для збереження координат використайте змінні i та j.
Ось макрос, що має бути створено:
Sub Площадь2()
i = ActiveCell.Row
j = ActiveCell.Column
ActiveSheet.Cells(i, j) = ActiveSheet.Cells(i, j - 1).Value * ActiveSheet.Cells(i, j - 2).Value
End Sub
- Принцип повернення результату у активну комірку є зручним при оперативних розрахунках, бо активною може бути будь-яка комірка. Однак більш корисними є макроси-функції, що повертають результати у ті комірки, де записано їх виклик. Особливо якщо мати на увазі можливість задавати вихідні дані у будь-якій формі – і константами, і змінними, і назвами комірок, де їх розміщено.
Створіть такий макрос-функцію для розрахунків площини прямокутників:
Function Площадь3(Ширина, Высота) As Double
Площадь3 = Ширина * Высота
End Function
Тут Ширина і Высота є параметри. Сама функція зветься Площадь3 і повертає результат типу Double. Зверніть увагу на те, що для повернення результатів вони мають бути присвоєні назві самої функції, як це зроблено у другому рядку.
Скористайтесь Майстром функцій, щоб вмонтувати функцію Площадь3 у комірку В3. (Функція Площадь3 має бути у розділі "Определенные пользователем"). За перший параметр хай знов буде комірка А1 зі значенням 5, а за другий параметр – константа 8. По завершенні роботи Майстра у В3 з'явиться значення 40. Воно має змінюватися при вводі нових чисел у комірку А1.
.
- Уявлення даних: типи даних, константи та змінні. Масиви.
Типи даних, що використовуються у VBA, зведено у наступну таблицю:
-
Тип
Розмір у байтах
Інтервал визначення
Boolean
2
тільки True або False
Integer
2
від -32 768 до 32 767
Long
4
від -2 147 483 648 до 2 147 483 647
Single
4
від -3.402823E38 до 3.402823E38
Double
8
від -1.79769313486232E308 до 1.79769313486232E308
Currency
8
-922,337,203,685,477.5808 to 922,337,203,685,477.5807.
Date
8
от 1 января 0100 г. до 31 декабря 9999.
Object
4
будь-яке посилання на об'єкт.
String
по1 на символ
от 0 до 65 535 символів
Variant
16 + по 1 на символ
діапазон Double або String
Структура (Type)
сумм. розмір елементів
стосовно до типу елементів
Зверніть увагу на тип Variant. Змінні цього типу можуть приймати значення замість будь-якого з інших простих типів, бо ці значення зберігаються в них у символьному форматі разом з ознакою типу. Це зручно, але дуже неефективно по пам'яті. Тип Variant використовується, якщо його задано явно, або коли інше не вказано.
Для завдання константи достатньо записати службове слово Const, після якого її ім'я, потім знак "=" і саме значення. Текстові константи беруться у лапки.
Для завдання змінних використовується службове слово Dim, після якого ставиться її ім'я, потім службове слово As і вказується тип змінної.
Окремим видом змінних є масиви. При їх завданні після імені змінної ставиться у дужках список інтервалів зміни індексів (у простішому випадку - кількість елементів у масиві).
Якщо треба створити масив з наперед заданими визначеннями елементів, можна скористатися функцією Array. Але слід пам'ятати, що вона повертає не справжній масив, а змінну типу Variant, що містить у себе заданий масив у символьному виразі.
Для опанування прийомів завдання змінних введіть текст наступного макросу (без коментарів):
Sub Test_Data()
Const Пи_5 = 3.14159
' Это константа числа Пи с точностью 5 знаков после запятой
Const Имя1 = "Всеволод"
' Это текстовая константа
Дни_недели = ("Понедельник", "Вторник", "Среда", "Четверг", "Пятница", _
"Суббота", "Воскресенье")
' Это вариантная переменная, принявшая значение массива
' из семи слов
Dim АА(50)
' Это одномерный массив из 51 элемента неопределенного типа
' Первый элемент имеет индекс 0, если нижняя граница не задана явно
Dim ВВ3(1 To 5, 4 To 9, 3 To 5) As Double
' Это трехменный массив из 563 элементов типа действительных
' чисел двойной точности
Dim Массив_из_неопределенного_заранее_числа_вариантов()
' Название этого массива говорит само за себя
End Sub
Якщо треба кількість елементів може бути визначена тільки під час розрахунків, і тому не можна об'явити масив заздалегідь, або по-суті треба створити динамічний масив, використовується оператор ReDim. Наприклад,
ReDim Массив_1(N) As Integer
' Создание одномерного массива из n+1 целых чисел,
' где N – целая переменная
Своєрідними масивами стають списки однотипних елементів, що містяться у об'єктах. Наприклад:
Set AAA_1 = ActiveWorkbook.Names
' Объявление идентификатора ААА_1 для списка имен,
' назначенных ячейкам активной книги
Set RRR_1 = ThisWorkbook.Sheets("Лист1").Range("A5:D10")
' Список всех ячеек в диапазоне A5:D10 на Листе 1
Для визначення реальної кількість елементів у такому випадку використовується метод Count. Наприклад, вираз:
MsgBox ("Всего ячеек в диапазоне " + RRR_1.Count)
видасть повідомлення про наявність комірок у діапазоні A5:D10.
- Роботу оператору розгалуження мови VBA перевірте на наступному прикладі:
Function Квадратный_корень_от_частного (X, Y) As Double
If Y=0 Then
MsgBox ("Нельзя делить на 0")
Elseif ((X<0) and (Y>0)) or ((X>0) and (Y<0)) Then
MsgBox ("Нельзя брать кв_корень из отрицательного числа")
Else
Квадратный_корень_от_частного =Sqr(X/Y)
MsgBox ("Порядок!")
End If
End Function
Для цього введіть цю функцію і використайте її на робочому листі. Призначте параметрам комірки листа. Змінюйте значення у цих комірках так, щоб отримати всі три повідомлення.
- Роботу оператору вибору перевірте на наступному прикладі:
Function Проверка_ячейки(X As Integer) As String
Select Case X
Case 1 To 18
Проверка_ячейки = "Маловато будет..."
Case 18 To 20
Проверка_ячейки = "Достаточно?"
Case 21
Проверка_ячейки = "Ура!"
Case Else
Проверка_ячейки = "Перебор :-("
End Select
End Function
- Оператори циклу бувають декількох видів.
Перш за все це оператори, в яких явно вказано діапазон зміни спеціального лічильника. Наприклад, у наступному макросі використано два цикли, що вкладені один у другий. Лічильниками є N_строки, що зменшується від 14 до 2 із кроком -2, тобто через один рядок, і N_столбца, що для кожного обраного рядку пробігає значення від 1 до 8. Тим самим обирається пара комірок, для котрої встановлюються атрибути: колір, розмір тощо, та видаляється значення.
Sub Проверка_For()
Set S1 = ThisWorkbook.Sheets("Автозапис")
For N_строки = 14 To 2 Step -2
For N_столбца = 1 To 8
With S1.Range(S1.Cells(N_строки, N_столбца), _
S1.Cells(N_строки - 1, N_столбца))
.ClearContents
.Interior.ColorIndex = (N_строки * N_столбца) / 2
.Interior.Pattern = xlSolid
.Borders(xlTop).Weight = xlThin
.Borders(xlTop).ColorIndex = xlAutomatic
.Borders(xlBottom).Weight = xlThin
.Borders(xlBottom).ColorIndex = xlAutomatic
End With
Next N_столбца
Next N_строки
End Sub
Щоб не витрачати час на набір цього тексту, використайте автозапис макросу, що видаляє зміст комірки, зафарбовує її та створює тонку рамку навколо. Потім додайте до тексту рядки, котрих не вистачає, та перевірте його роботу.
Аналогічно попередньому організовано цикл For Each, різниця в тому, що він базується не на лічильнику, а на окремих елементах, що поступово вибираються із списку. Наприклад, цикл
For Each NС In ThisWorkbook.Sheets("Автозапис").Range("A5:F15")
NС.Value = 5
Next NС
запише число 5 у кожну комірку діапазону A5:F15.
Зовсім інакше працює цикл While. Він виконується доти, доки умова у заголовку є істиною. Наприклад, цикл
i=1
While ThisWorkbook.Sheets("Автозапис").cells(1,i) <> ""
i=i+1
Wend
буде перебирати всі комірки у першому рядку, доки не знайде пусту.
Якщо після цього циклу поставити оператори
ThisWorkbook.Sheets("Автозапис").Select
ThisWorkbook.Sheets("Автозапис").Cells(15, i).Activate
то знайдена комірка буде активізована, тобто виділена. Перевірте це.
- Тепер навчимось застосовувати вбудовані функції VBA та налагоджувати макроси.
Зробимо це на прикладі процедури, що обробляє текст з активної комірки.
Надрукуйте наступний макрос (коментарі можна пропустити):
Sub Доллары_в_гривны_из_текста()
' Процедура берет из активной ячейки текст,
' заменяет в нем цену в долларах на цену в гривнах по курсу,
' и выводит результат в строку состояния
kurs = 4.36 ' Курс доллара на сегодня
Dim S1, S2 As String ' Рабочие строки
Dim L As Integer ' Размер исходной строки
Dim i1, i2 As Integer ' Номер перв. и послед. символа в цене
Dim V1 As Double ' Цена в долларах и в гривнах
S1 = ActiveCell.Value ' 1) Взять текст из активной ячейки
L = Len(S1) ' 2) Определить размер текста
' 3) Найти знак $ в тексте (начало цены)
i1 = 1
While (i1 < L) And (Mid(S1, i1, 1) <> "$")
i1 = i1 + 1
Wend
' 4) Найти следующий пробел (конец цены)
i2 = i1
While (i2 < L) And (Mid(S1, i2, 1) <> " ")
i2 = i2 + 1
Wend
If i2 > i1 Then ' 5) Если расположение цены найдено, то
S2 = Mid(S1, i1 + 1, i2 - i1) ' 5.1) выделить цену
V1 = Val(S2) ' 5.2) преобразовать цену из текста в число
V1 = V1 * kurs ' 5.3) Вычислить цену в гривнах
' 5.4) Преобразовать цену обратно в текст и вставить в строку
S1 = Left(S1, i1 - 1) + " " + CStr(V1) + "грн. " + Right(S1, L - i2)
' 5.5) Вывести результат в строку состояния
Application.StatusBar = S1
Else ' 5.6) Вывести предупреждение в строку состояния
Application.StatusBar = "В ячейке нет суммы в долларах!"
End If
End Sub
У цьому макросі використовуються функції обробки рядків Len(S1), (Mid(S1, i1, L), Left(S1, L), Right(S1, L) і перетворення тексту у число Val(S2) і навпаки CStr(V1). Щоб більш дізнатися про призначення цих функцій, можна встановити курсор на них та натиснути на F1.
Щоб налагодити такий макрос, добре застосувати вбудований налагоджувач, пройти його по кроках і перевірити проміжні значення змінних.
По-перше встановіть точку зупинки на першому операторі макроса. Для цього встановіть курсор на рядок S1 = ActiveCell.Value ' 1) Взять текст из активной ячейки і натисніть F9. Фон у рядка стане червоним.
Тепер перейдіть на робочий лист "Автозапис", введіть у будь-яку комірку текст "Цена $15 за комплект", зробіть цю комірку активною і викличте макрос на виконання. Розкриється вікно налагоджувача і виконання макросу призупиниться на контрольній точці.
Винесіть на закладку "Значение" всі змінні. Для цього активізуйте цю закладку а потім поверніться до тексту макросу і по черзі встановіть курсор на кожну змінну, натисніть Shift-F9 і Enter. Ви побачите, що значення змінних на цьому етапі пусті.
Натискайте на клавішу F8 і виконуйте оператори макросу крок за кроком. Слідкуйте за значеннями змінних та порівнюйте їх з тими, що мають бути.
Перевірте, як поведе себе цей макрос, якщо у вихідних даних після знаку $ будуть стояти не цифри, а букви.
3.Контрольні запитання
- Чому макроси, що записані автоматично, як правило, потребують додаткове редагування? Як це робити?
- Як призначити макрос гарячим клавішам та команді меню?
- Як призначити макрос кнопці на панелі керування?
- Чим макроси – процедури відрізняються від макросів – функцій? Як їх використовувати?
- Яка різниця між змінними і константами? Для чого ними користуються?
- Яка різниця між властивостями об'єктів і змінними, між методами об'єктів і бібліотечними функціями VBA?
- Як отримати координати активної комірки, виділеної області?
- Як за допомогою макросу зробити задану комірку активною?
- Наведіть 3 прийоми виводу результатів обчислень.
- У яких випадках застосування конструкції Select-Case ефективніше за конструкцію If-Then-Else?
- Поясніть застосування трьох видів операторів циклу.
- Якими засобами можна перетворити текст на число і навпаки?
- Як простежити за значеннями змінних при виконанні макросу?
- Як зробити, щоб виконання макросу призупинялося у бажаному місці? Як продовжити виконання після цього?
4.Варіанти індивідуальних завдань для удосконалення матеріалу
Варіант 1. Створіть макрос, що знаходить пусті комірки у вказаному діапазоні і заповнює їх середнім арифметичним значень з комірок, що розташовані поруч з пустими.
Варіант 2. Створіть макрос, котрий вирішує квадратне рівняння по коефіцієнтам, заданим у комірках таблиці і виводить повідомлення, якщо рішення немає.
Варіант 3. Створіть макрос, котрий змінює текст у комірці так, щоб кожне наступне слово було іншого кольору.
5.Рекомендована література
- А.Колесников. Excel 7.0 для Windows 95. - К.: BHV, 1996. - с. 346-360.
- Додж М. Кината К. Стинсон К. “Эффективная работа с Microsoft Excel 97”, - СПб: Питер, 1998. – с. 916-951.
МСУ, Факультет комп’ютерних наук