Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
макрос.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
613.89 Кб
Скачать

1.5. Повторення дій у середовищі vba

При записі макросів за допомогою рекордера завжди виходить лінійний ланцюжок інструкцій, що послідовно описує виконані в процесі запису дій. Для того щоб створити процедури, здатні на підставі перевірки деяких умов здійснити вибір однієї з декількох можливостей чи організувати так називані циклічні процеси (повторення дій), приходиться писати процедури самому. Мова VBA надає кілька могутніх і гнучких структур, що дозволяють легко повторювати різні дії. Цикли реалізуються за допомогою ключових слів For/Next, Do Loop і For Each/Next. Обмежимося розглядом оператора циклу For/Next, який найбільш часто використовується. Даний оператор має наступний синтаксис:

For лічильник = НачальноеЗначение To КонечноеЗначение [ Step Приращение ]

оператори

Next [ лічильник ]

У квадратні дужки укладені необов'язкові елементи синтаксичної конструкції. Усі цикли For використовують як лічильник перемінну, значення якої збільшується чи зменшується при кожнім виконанні циклу. На початку циклу лічильнику привласнюється НачальноеЗначение. У циклі лічильник змінюється на збільшення доти, поки не буде досягнуте задане КонечноеЗначение. У наступному прикладі "лічильник" s змінюється від значення 1 до значення 15 із кроком 2 при кожнім виконанні циклу і, відповідно, приймає значення 1, 3, 5, 7, 9, 11, 13, 25.

For s = 1 To 15 Step 2

оператори, яки використовують значення s, що змінюється

Next

Якщо збільшення "лічильника" дорівнює одиниці, задавати його явно необов'язково, тобто вказівку Step 1 можна опустити.

Створимо новий макрос для MS Excel, що записує в перші чотири осередки першого рядка листа текстові значення з номерами кварталів року.

  1. Запустить MS Excel і перейдіть на новий робочий лист.

  2. Натисніть Alt+F11 для активізації редактора VB.

  3. Виконаєте команду InsertModule для додавання нового модуля до проекту. Редактор додає новий модуль і відкриває в правій частині вікно коду.

  4. У лівому нижнім вікні PropertiesModule 1 перейменуйте новий модуль, давши йому ім'я, наприклад, Demo_ForNext.

  5. Введіть наступний текст:

Sub Demo_ForNext()

For s = 1 To 4

Cells( 1, s ).Value = "Квартал " & s

Next

End Sub

6. Поверніться у вікно документа (наприклад, комбінацією Alt+Q ) і запустите макрос Demo_ForNext.

Даний макрос виводить заголовок деякої таблиці тільки в лівому верхньому куті робочого листа.

Завдання для самостійного виконання.

Самостійно зміните текст макросу для того, щоб можна було вказувати місце розташування таблиці на робочому листі шляхом уведення координат самого лівого осередку заголовка.

Sub Demo_ForNext()

Dim Str As String

Str = InputBox("Введите номер строки:")

Stolb = InputBox("Введите номер столбца:")

Range("A1:K20").ClearContents

For s = CInt(Stolb) To (CInt(Stolb) + 3)

Cells(CInt(Str), i).Value = "Квартал " & (i - CInt(Stolb) + 1)

Next

End Sub

У зміненому тексті макросу перед оператором циклу поміщене оператор очищення видимої на екрані частини робочого листа при кожнім запуску макросу. Функція CInt(x) перетворить строкове значення х у ціле значення. Метод Cells(a,b) вибирає як об'єкт Range одиночний осередок чи так називану колекцію одиночних осередків. Його особлива зручність полягає в тім, що він використовує числові значення, що визначають номер рядка (a) і стовпця (b), на перетинанні яких знаходиться осередок.

Призначте також макросу яку-небудь комбінацію клавіш, наприклад, Ctrl+K (команда СервисМакрос МакросыПараметры) і опишіть макрос.

Для поглиблення знань і практичних навичок використання VBA можна звернутися до літературних джерел [1, 2, 3].

28