Найти в Дзене
Макрос решает

Макросы, что «чует» мышь: как работают события GotFocus и LostFocus в Excel + ActiveX CheckBox в деле

Когда мы говорим об интерактивности Excel, чаще всего в голове всплывают кнопки и формы. Но настоящая магия начинается, когда элементы начинают ощущать фокус, реагировать на действия пользователя и изменять поведение по щелчку. Сегодня мы подробно разберём события GotFocus и LostFocus в VBA, а также узнаем, как использовать элемент CheckBox в ActiveX для настройки макросов на более интуитивном и понятном уровне. 📌 Шпаргалка по этим событиям — уже доступна в нашем Telegram-канале "Макрос". Подпишитесь, чтобы не пропустить эксклюзивы, которые не публикуются в Дзене! GotFocus — это момент, когда элемент управления (например, кнопка) получает фокус, то есть становится активным.
LostFocus — наоборот, когда элемент теряет фокус: пользователь переключается на другой объект (ячейку, кнопку, форму и т.д.). 📎 Эти события особенно полезны при работе с элементами управления ActiveX, которые дают больше гибкости, чем стандартные формы. У нас есть кнопка Рассчитать и прозрачная надпись Label2, ко
Оглавление

🔍 VBA события GotFocus и LostFocus: как работают и зачем нужны

Когда мы говорим об интерактивности Excel, чаще всего в голове всплывают кнопки и формы. Но настоящая магия начинается, когда элементы начинают ощущать фокус, реагировать на действия пользователя и изменять поведение по щелчку. Сегодня мы подробно разберём события GotFocus и LostFocus в VBA, а также узнаем, как использовать элемент CheckBox в ActiveX для настройки макросов на более интуитивном и понятном уровне.

📌 Шпаргалка по этим событиям — уже доступна в нашем Telegram-канале "Макрос". Подпишитесь, чтобы не пропустить эксклюзивы, которые не публикуются в Дзене!

🧠 Что такое события GotFocus и LostFocus?

GotFocus — это момент, когда элемент управления (например, кнопка) получает фокус, то есть становится активным.

LostFocus — наоборот, когда элемент теряет фокус: пользователь переключается на другой объект (ячейку, кнопку, форму и т.д.).

📎 Эти события особенно полезны при работе с элементами управления ActiveX, которые дают больше гибкости, чем стандартные формы.

🧪 Пример на практике: меняем фон надписи при фокусе на кнопке

У нас есть кнопка Рассчитать и прозрачная надпись Label2, которая должна становиться видимой, когда пользователь нажимает на кнопку.

Всё, что нужно — два обработчика событий:

│ Private Sub CommandButton1_GotFocus()

│ * Label2.BackStyle = 1*

│ End Sub
│ Private Sub CommandButton1_LostFocus()

│ * Label2.BackStyle = 0*

│ End Sub

Что здесь происходит:

  • Label2.BackStyle = 1 делает фон надписи непрозрачным;
  • Label2.BackStyle = 0 — возвращает прозрачность;
  • Всё работает просто на переключении фокуса — без дополнительных кнопок!

✅ Элемент CheckBox и логика выбора

CheckBox — это, по сути, флажок: да или нет, включено или выключено. Его часто недооценивают, а зря.

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

│ If CheckBox1.Value = True Then

│ * ipe = 1*

│ Else

│ * ipe = 0*

│ End If

Затем интегрируем это в обработчик расчёта:

│ Private Sub CommandButton1_Click()

│ * If CheckBox1.Value = True Then*

│ *  ipe = 1*

│ * Else*

│ *  ipe = 0*

│ * End If*

│ * result = Application.WorksheetFunction.Pmt(rate, nper, pv, , ipe)*

│ End Sub

Теперь одной галочкой можно изменить поведение всей формулы.

🔗 Свойство LinkedCell — связка с ячейкой

Чтобы связать состояние CheckBox с конкретной ячейкой:

  1. Перейдите в режим конструктора;
  2. Выделите CheckBox;
  3. Укажите в свойствах: LinkedCell = E1.

Теперь при установке галочки в E1 будет TRUE, при снятии — FALSE. Это можно использовать в формулах, условном форматировании и других макросах.

📎 Это особенно удобно, если вы хотите строить отчёты без лишнего кода, на чистом Excel.

🧰 Практические идеи применения:

  • ✅ Управление видимостью элементов;
  • ✅ Подсказки и подсветка активных полей;
  • ✅ Активация/деактивация кнопок;
  • ✅ Автоматические расчёты на основе выбора;
  • ✅ Слежение за маршрутом пользователя.

🧩 Будущее событий в VBA и ActiveX

Microsoft постепенно делает VBA стабильнее:

  • Надёжность ActiveX на разных системах;
  • Поддержка 64-битного Office;
  • Интеграция с Office JS и облаком;
  • Переход к новой событийной модели.

📢 Чтобы быть в курсе всего:

🗨️ А теперь — ваш ход!

Как вы используете GotFocus, LostFocus и CheckBox в своих проектах?

Может, уже придумали необычное решение? Делитесь в комментариях!

❤️ Если статья была полезна — подпишитесь и поддержите нас лайком.

📥 А в
Telegram-канале «Макрос» уже доступна шпаргалка по всем ключевым событиям формы!

https://t.me/+2_5UmiI6UjFlNmVi
https://t.me/+2_5UmiI6UjFlNmVi