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

VBA Excel № 161 Как создать заставку при включении Excel

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

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

Пошаговая инструкция

Откройте Excel и создайте новую рабочую книгу, где будет размещена ваша заставка.

Откройте редактор Visual Basic для приложений (VBE) с помощью комбинации клавиш Alt + F11.

Создайте пользовательское диалоговое окно, которое будет использоваться как заставка. Вставьте новый UserForm, который автоматически получит имя UserForm1.

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

Добавьте элементы управления на UserForm, такие как:

Image: Для отображения логотипа или картинки.

Label: Для вывода текста или другой информации (сами придумайте).

📌 Скачать файл пример, можно в конце статьи.

Для загрузки картинки, в свойствах Picture элемента Image выберите кнопку с тремя точками:

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

В появившемся диалоговом окне выберите подготовленную картинку с подходящим расширением (jpg подходит) и нажмите Открыть:

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

В модуле ЭтаКнига (ThisWorkbook) добавьте следующую процедуру:

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

☝ Эта процедура запустит показ UserForm при открытии рабочей книги.

В модуле кода UserForm1 добавьте процедуру для автоматического закрытия формы через три секунды:

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

☝ Эта процедура использует метод OnTime объекта Application для вызова процедуры ЗакрытиеФормы через три секунды. Давайте разберём:

  • Application.OnTime: Это метод объекта Application, который используется для планирования выполнения процедуры в указанное время.
  • Now: Функция Now возвращает текущее дату и время.
  • TimeSerial(0, 0, 3): Функция TimeSerial создает значение времени. В данном случае, аргументы функции TimeSerial(0, 0, 3) означают "0 часов, 0 минут, 3 секунды". То есть, функция возвращает значение, представляющее три секунды.
  • Now + TimeSerial(0, 0, 3): Эта часть кода складывает текущее время (возвращаемое функцией Now) и три секунды (возвращаемые функцией TimeSerial). В результате получается время, которое наступит через три секунды от текущего момента.
  • "ЗакрытиеФормы": Это имя процедуры, которую нужно выполнить в указанное время.

Вставьте следующую процедуру в общий модуль VBA:

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

☝ Эта процедура выгружает UserForm1 из памяти, тем самым закрывая заставку.

Для возможности ручного закрытия заставки, добавьте кнопку на UserForm1, которая автоматически примет название CommandButton1:

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

Установите её свойство Cancel равным True, чтобы кнопка могла закрыть UserForm.

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

В модуле кода UserForm1 добавьте следующую процедуру:

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

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

Если необходимо, чтобы заставка отображалась немодально (не блокируя остальные действия), измените процедуру Workbook_Open следующим образом:

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

☝ Теперь UserForm будет отображаться немодально, позволяя пользователю продолжать работу в Excel, пока показывается заставка.

Подведем короткий итог. Создание заставки в Excel с помощью VBA может быть весьма полезным инструментом для отображения информации или логотипов при запуске приложения. Следуя этим шагам, вы можете создать свою собственную заставку, которая будет автоматически показываться и закрываться через заданное время.

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

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