/ / Індикатор просування в Excel VBA

Індикатор просування в Excel VBA

Нижче ми розглянемо програму в Росії Excel VBA що створює a індикатор прогресу. Ми утримуємо індикатор прогресу настільки простими, наскільки це можливо, але це виглядає професійно. Чи готові ви?

Формат Userform, який ми збираємося створити, виглядає наступним чином:

Індикатор просування в Excel VBA

Щоб створити цю Userform, виконайте наступні кроки.

1. Відкрийте редактор Visual Basic. Якщо Провідник проекту не відображається, натисніть Переглянути, Провідник проекту.

2. Клацніть Insert, Userform. Якщо панель інструментів не відображається автоматично, натисніть Переглянути, Панель інструментів. Ваш екран повинен бути налаштований як показано нижче.

Налаштування екрана Userform у програмі Excel VBA

Цей Userform складається з трьох елементів керування. Контроль кадру та два елементи управління.

3. Додайте елемент керування кадру. Ви можете зробити це, натиснувши рамку з панелі інструментів. Далі ви можете перетягнути елемент керування на панелі Userform. Вам потрібно змінити деякі властивості цього елемента керування. Клацніть правою клавішею миші на елементі керування рамкою, а потім клацніть на властивостях. Залиште поле "Підпис", встановіть значення "Висота до 24" та "Ширина" до 204.

4 Додайте перший елемент керування міткою та помістіть його в рамку керування. Клацніть правою клавішею миші на елементі управління, а потім клацніть на властивостях. Змініть ім'я на панель, BackColor, щоб виділити, порожній поле Caption, встановіть висоту до 20 і ширину до 10.

5 Додайте другий контроль етикетки та помістіть його над контролем рамки. Клацніть правою клавішею миші на елементі управління, а потім клацніть на властивостях. Змініть ім'я на Текст та змініть підпис на "0% завершено".

6. Змініть заголовок "Userform" на Індикатор "Прогрес".

Після того, як це буде завершено, результат має відповідати картині формату Userform, показаному раніше.

7. Встановіть на ваш робочий аркуш командну кнопку та додайте наступну кодову лінію, щоб відобразити Userform:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Якщо ви пройшли через іншу форму UserformПриклади на цьому сайті, ви знаєте, що саме час створювати Sub UserForm_Initialize. Цей підменю запускається автоматично, коли завантажується формат Userform. Таким чином, коли ви використовуєте метод Show для Userform, код буде автоматично виконано. Замість Sub UserForm_Initialize ми створюємо Sub UserForm_Activate. Використовуючи цей підрозділ, Excel VBA може оновити Userform, щоб показати прогрес макросу.

8. Відкрийте редактор Visual Basic.

9. У Провіднику проекту клацніть правою кнопкою миші на UserForm1 і натисніть кнопку Перегляд коду.

10. Оберіть Userform в спадному списку ліворуч. У спадному списку праворуч виберіть Активувати.

11. Додайте наступну кодову лінію:

Private Sub UserForm_Activate()

code

End Sub

Пояснення: цей підменю викликає інший суб-іменний код, який ми збираємося створити за хвилину. Збентежений Ви можете прочитати розділ "Функція" та "Підрозділ", щоб дізнатись більше про підпис. Якщо ви поспішаєте, просто виконайте наступні кроки, і вам буде добре.

12 Помістіть підзаголовок у модуль (у редакторі Visual Basic натисніть кнопку Вставити, модуль). Це лише приклад. Це місце для додавання власного коду, коли ви хочете використати цей індикатор прогресу для власного макросу. Код виглядає наступним чином.

Sub code()

Dim i As Integer, j As Integer, pctCompl As Single

Sheet1.Cells.Clear

For i = 1 To 100
    For j = 1 To 1000
        Cells(i, 1).Value = j
    Next j
    pctCompl = i
    progress pctCompl
Next i

End Sub

Пояснення: по-перше, ми ініціалізуємо деякі змінні. Далі ми очищаємо аркуш1. Ми використовуємо подвійний цикл, щоб показати значення від 1 до 1000 у перших 100 рядках робочого аркуша. Це дозволить Excel VBA зайняти деякий час і дасть нам можливість побачити прогрес макросу. Змінна pctCompl (абревіатура для percentCompleted) визначає прогрес макросу. Нарешті, ми називаємо інший під назвою progress і передаємо значення змінної pctCompl, щоб оновити Userform. Таким чином ми можемо побачити прогрес макросу!

13. Додати інший під назвою прогресу. Код виглядає так:

Sub progress(pctCompl As Single)

UserForm1.Text.Caption = pctCompl & "% Completed"
UserForm1.Bar.Width = pctCompl * 2

DoEvents

End Sub

Пояснення: перша кодова рядок змінює заголовок першого елемента керування міткою. Друга рядок коду змінює ширину другого елемента керування. Додати DoEvents, щоб оновити Userform.

14. Закрийте редактор Visual Basic і натисніть кнопку команди на аркуші:

Результат:

Результат індикатора прогресу

Примітка: для цього макросу ми використовували змінну i для вимірювання прогресу. Наприклад, у рядку 11, 10% завершено. Це може бути різним для вашого макросу. Техніка проходження значення змінної pctCompl до підрядного процесу для оновлення форми Userform залишається незмінною.

Також читайте: