Найти тему
VBA Excel с нуля

VBA Excel № 177. Анимация элемента управления Label

Оглавление
Скриншот с моего ноутбука
Скриншот с моего ноутбука

В этом примере будет рассмотрена анимация элемента управления Label в рамках формы UserForm, которая представляет собой генератор случайных чисел. Этот пример помогает лучше понять, как можно реализовать простую анимацию в Excel с использованием макросов на языке VBA (Visual Basic for Applications).

На UserForm размещены два элемента управления TextBox, в которые пользователь вводит минимальное и максимальное значения диапазона для генерации случайных чисел. Эти поля позволяют задать границы, в которых будет отображаться случайное число. Изначально на Label отображаются четыре знака вопроса («????»), которые затем заменяются на случайные числа при нажатии на кнопку «Пуск». Кнопка «Пуск» после нажатия изменяет свою надпись на «Стоп», что указывает на возможность остановки генерации. Когда пользователь нажимает на кнопку «Стоп», анимация прекращается, и на экране остается окончательное случайное число.

Примерное окно формы можно представить на двух следующих скриншотах.

Скриншот с моего ноутбука
Скриншот с моего ноутбука
Скриншот с моего ноутбука
Скриншот с моего ноутбука

Код для кнопки генерации случайных чисел

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

Опция Option Explicit указывает, что все переменные должны быть явно объявлены перед использованием. Это помогает избежать ошибок, связанных с опечатками в названиях переменных. Переменная Stopped используется для отслеживания состояния кнопки (пуск или остановка).

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Как видно ниже, объявлены две переменные для хранения минимального и максимального значений, которые будут введены в поля TextBox. Также создается объект wf, который позволяет использовать встроенные функции Excel, такие как Min и Max.

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Строка связывает объект wf с функциями Excel (см. ниже).

Блок If Me.cmdStartStop.Caption проверяет, что кнопка отображает надпись «Пуск», что означает начало генерации случайных чисел.

Скриншот с моего ноутбука
Скриншот с моего ноутбука

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

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Аналогично проверяется, что второе значение также является числом.

Скриншот с моего ноутбука
Скриншот с моего ноутбука

На скриншоте ниже используются функции Excel Min и Max, чтобы гарантировать, что меньшее значение всегда рассматривается как нижняя граница, а большее — как верхняя.

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Размер шрифта для элемента Label автоматически регулируется в зависимости от длины числа, чтобы оно всегда выглядело пропорционально.

Скриншот с моего ноутбука
Скриншот с моего ноутбука

В этом блоке (скриншот ниже) начинается генерация случайных чисел, которая продолжается до тех пор, пока переменная Stopped не станет True. Инструкция DoEvents позволяет другим процессам операционной системы выполняться параллельно, что делает возможной анимацию.

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Если кнопка находится в состоянии «Стоп», то при нажатии анимация прекращается, и кнопка возвращается в исходное состояние.

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Обработка кнопки «Закрыть»

В форме также предусмотрена кнопка «Закрыть», но пользователю можно завершить работу с формой с помощью клавиши Esc. Этот код срабатывает при нажатии кнопки «Закрыть», останавливая анимацию и выгружая форму.

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Форма завершает работу, гарантируя остановку любой выполняемой анимации.

Скриншот с моего ноутбука
Скриншот с моего ноутбука
Инструкция DoEvents играет ключевую роль, позволяя программе реагировать на действия пользователя и обновлять интерфейс.

Вот как это работает на видео:

✔ СКАЧАТЬ ФАЙЛ-ПРИМЕР

На моём телеграмм-канале появился анонс на следующую статью № 178 «Немодальные диалоговые окна», которая выйдет в четверг 03.10.2024 с НОВЫМ Excel ФАЙЛ-ПРИМЕРОМ. Скачать его уже сейчас можно уже сейчас. Там же есть ВИДЕО о работе софта.