В этом примере будет рассмотрена анимация элемента управления 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 ФАЙЛ-ПРИМЕРОМ. Скачать его уже сейчас можно уже сейчас. Там же есть ВИДЕО о работе софта.