Найти в Дзене
VBA Excel с нуля

VBA Excel № 182. Создание эффекта лайтбокса

Если вы часто пользуетесь интернетом, то наверняка замечали эффект, когда фон страницы темнеет, выделяя картинку или всплывающее окно. Этот визуальный приём, называемый эффектом лайтбокса, привлекает внимание пользователя к определённому элементу на экране. В данной статье мы узнаем, как реализовать этот эффект в Microsoft Excel, используя VBA и формы UserForm. Примером послужит затемнение окна Excel с отображением сообщений или картинок на переднем плане. Эффект лайтбокса создаёт впечатление, что остальная часть окна или страницы "выключена", подчёркивая активный элемент. Это достигается за счёт наложения полупрозрачного слоя на фон. В контексте Excel, полупрозрачный слой реализуется с помощью формы UserForm с чёрным фоном, покрывающим всё окно приложения. На изображении ниже показано окно Excel с применённым эффектом лайтбокса. Основное окно затемнено, а передний план остаётся ярким и читаемым. Первоначально была создана форма UserForm с чёрным фоном. Затем с помощью написанного кода
Оглавление
Скриншот с моего ноутбука
Скриншот с моего ноутбука

Эффект лайтбокса в Excel

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

Что такое эффект лайтбокса?

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

На изображении ниже показано окно Excel с применённым эффектом лайтбокса. Основное окно затемнено, а передний план остаётся ярким и читаемым.

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

Как это реализовано?

Первоначально была создана форма UserForm с чёрным фоном. Затем с помощью написанного кода настроили положение и размеры формы так, чтобы она полностью соответствовала желаемому результату, т.е. полностью перекрывалось окно Excel.

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

Шаги реализации

Создание UserForm

  1. В редакторе VBA создайте UserForm и установите для него чёрный фон.
  2. Убедитесь, что свойства Height, Width, Left, и Top будут адаптированы под размеры окна Excel.
Скриншот с моего ноутбука
Скриншот с моего ноутбука

VBA-код для управления UserForm

Итак полный код, который отвечает за отображение эффекта лайтбокса. Отмечу, что строки кода имеют пояснения. Если на скриншоте плохо видно, то комментарии каждой строки кода можно посмотреть в скачанном примере.

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

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

Коротко о работе кода

1. Объявления функций: Используются API-функции Windows для управления окнами.

2. Инициализация формы: Форма UserForm настраивается так, чтобы убрать стандартные элементы управления окна.

3. Активация формы: При активации формы она адаптируется под размеры окна Excel, а также применяются эффекты прозрачности.

4. Функция TransparentUserForm: Устанавливает уровень прозрачности формы с помощью Windows API.

5. Показ картинки и сообщений: Реализованы отдельные процедуры для отображения изображений и текстовых сообщений поверх затемнённого фона.

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

Короткое видео по данной теме:

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