Если в вашей таблице Excel есть колонка с датами дедлайнов, сроками оплаты или важными событиями, а вы забываете их проверять, решение — всплывающее напоминание. Оно появится автоматически при открытии файла или по условию (например, когда до даты осталось 3 дня). В отличие от обычных комментариев, такие уведомления невозможно пропустить: они блокируют работу с таблицей, пока пользователь не нажмёт «OK».
Способы создания зависят от версии Excel и задачи: для разовых напоминаний хватит функции ПРОВЕРКА ДАННЫХ, а для сложной логики (например, уведомления за неделю до события) понадобится VBA-макрос. Ниже — рабочие методы с пошаговыми скриншотами, нюансами для Excel 2016–2023 и Microsoft 365, а также решения типичных ошибок (например, почему напоминание не срабатывает при открытии файла).
1. Напоминание через проверку данных (без макросов)
Самый простой способ — использовать инструмент Проверка данных (Data Validation). Он подходит для статичных уведомлений, которые появляются при выборе ячейки с датой. Например, если в колонке B указаны сроки сдачи отчётов, при клике на ячейку будет показано сообщение типа «Отчёт по проекту X сдать до 15.05.2026».
Как настроить:
- 📌 Выделите диапазон ячеек с датами (например,
B2:B100). - 📌 Перейдите на вкладку
Данные→Проверка данных→Проверка данных.... - 📌 Во вкладке
Сообщение для вводавведите заголовок (например, «Внимание!») и текст напоминания. Используйте&[Ячейка]для динамического отображения даты (например, «Срок истекает&B2»). - 📌 Снимите галочку
Показывать подсказку, если ячейка текущая, чтобы сообщение появлялось только при клике.
Ограничения метода:
- ❌ Напоминание не появится автоматически при открытии файла.
- ❌ Нельзя привязать уведомление к текущей дате (например, «осталось 2 дня»).
- ❌ Сообщение показывается только при выборе ячейки.
2. Автоматическое напоминание при открытии файла (VBA)
Если нужно, чтобы уведомление появлялось сразу при открытии книги Excel, потребуется макрос. Например, вы хотите, чтобы при запуске файла проверялась колонка D с датами оплаты, и если сегодняшняя дата совпадает со значением в ячейке, выводилось окно с напоминанием.
Инструкция:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - В окне
Project Explorerнайдите вашу книгу (например,Book1.xlsm) и дважды кликните наThisWorkbook. - Вставьте следующий код:
Private Sub Workbook_Open()Dim ws As Worksheet
Dim rng As Range
Dim cell As Range
Dim today As Date
today = Date
Set ws = ThisWorkbook.Sheets("Лист1") ' Замените на имя вашего листа
Set rng = ws.Range("D2:D100") ' Диапазон с датами
For Each cell In rng
If Not IsEmpty(cell.Value) Then
If cell.Value = today Then
MsgBox "Напоминание: Сегодня срок по задаче " & cell.Offset(0, -1).Value, vbExclamation, "Внимание!"
End If
End If
Next cell
End Sub
- Сохраните файл как
.xlsm(с поддержкой макросов).
Важно: Макрос сработает только если в настройках Excel разрешено выполнение макросов. Для этого перейдите в Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Параметры макросов и выберите Включить все макросы (не рекомендуется для недоверенных файлов).
🔹 Файл сохранён в формате .xlsm (не .xlsx!)
🔹 В коде указано правильное имя листа (Sheets("Лист1"))
🔹 Диапазон ячеек (D2:D100) соответствует вашей таблице
🔹 Включены макросы в настройках Excel-->
3. Напоминание с учётом текущей даты (формула + условное форматирование)
Если вам нужно визуальное напоминание (например, выделение ячейки красным за 3 дня до события), комбинируйте Условное форматирование и формулы. Этот метод не блокирует работу с файлом, но делает критичные даты заметными.
Пример: Выделите красным ячейки в колонке E, если до даты в колонке D осталось ≤3 дней.
- Выделите диапазон (например,
D2:D100). - Перейдите на вкладку
Главная→Условное форматирование→Создать правило. - Выберите
Использовать формулу для определения форматируемых ячееки введите:=И($D2<>""; $D2-TODAY()<=3) - Настройте формат (например, красный фон) и нажмите
OK.
Дополнительные формулы для разных условий:
| Условие | Формула | Пример применения |
|---|---|---|
| Дата просрочена | =И($D2<>""; $D2 | Выделить серым просроченные задачи |
| Дата сегодня | =И($D2<>""; $D2=TODAY()) | Выделить жёлтым текущие сроки |
| Осталось ≤7 дней | =И($D2<>""; $D2-TODAY()<=7) | Выделить оранжевым приближающиеся дедлайны |
| Дата в будущем | =И($D2<>""; $D2>TODAY()) | Выделить зелёным актуальные задачи |
Как сделать динамическое сообщение с датой в условном форматировании
Вместо статического текста в подсказке (Проверка данных) можно использовать формулу для вывода оставшихся дней. Например, в ячейке E2 введите:
=ЕСЛИ(D2="";""; "Осталось дней: " & ЦЕЛОЕ(D2-TODAY()))
Затем примените условное форматирование к колонке E, чтобы выделять ячейки с значениями ≤3.
4. Напоминание по условию (если значение ячейки = «Да»)
Иногда напоминание должно срабатывать не по дате, а по другому условию. Например, если в колонке F стоит «Да» (означает «требует внимания»), при открытии файла появляется уведомление. Для этого модифицируйте макрос из раздела 2:
Private Sub Workbook_Open()
Dim ws As Worksheet
Dim rng As Range
Dim cell As Range
Set ws = ThisWorkbook.Sheets("Лист1")
Set rng = ws.Range("F2:F100") ' Диапазон с условием
For Each cell In rng
If Not IsEmpty(cell.Value) Then
If LCase(cell.Value) = "да" Then
MsgBox "Внимание! Требуется действие по строке " & cell.Row & ": " & cell.Offset(0, -1).Value, vbCritical, "Уведомление"
End If
End If
Next cell
End Sub
Расширенные условия:
- 🔢 Числовое значение:
If cell.Value > 100 Then(например, для уведомления о превышении лимита). - 📅 Дата + условие:
If cell.Value = "Да" And cell.Offset(0, 1).Value <= Date + 7 Then(если «Да» и срок ≤7 дней). - 🔍 Поиск по части текста:
If InStr(1, cell.Value, "срочно") > 0 Then.
По дате (дедлайны, сроки)
По условию (например, если ячейка = «Да»)
При открытии файла
Визуальное выделение (условное форматирование)-->
5. Напоминание с звуковым сигналом
Чтобы уведомление было ещё заметнее, добавьте звуковой сигнал. Для этого модифицируйте макрос, используя функцию Beep (простой сигнал) или воспроизведение .wav-файла.
Пример кода с звуком:
Private Sub Workbook_Open()
Dim ws As Worksheet
Dim rng As Range
Dim cell As Range
Dim today As Date
today = Date
Set ws = ThisWorkbook.Sheets("Лист1")
Set rng = ws.Range("D2:D100")
For Each cell In rng
If Not IsEmpty(cell.Value) Then
If cell.Value = today Then
Beep ' Звуковой сигнал
MsgBox "Сегодня срок по задаче: " & cell.Offset(0, -1).Value, vbExclamation, "Напоминание"
End If
End If
Next cell
End Sub
Как добавить кастомный звук:
- Поместите
.wav-файл (например,alert.wav) в папку с книгой Excel. - Замените
Beepна:Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long...
PlaySound ThisWorkbook.Path & "\alert.wav", 0, 1
⚠️ Внимание: Звуковые уведомления могут не работать на Mac или в веб-версии Excel. Перед использованием проверьте код на целевом устройстве.
6. Типичные ошибки и их решения
Если всплывающее напоминание не работает, проверьте следующие моменты:
- 🚫 Макросы отключены: Файл открыт в режиме блокировки макросов (в строке заголовка будет жёлтая полоса с предупреждением). Решение: нажмите
Включить содержимое. - 🚫 Неправильный диапазон: В коде указан неверный адрес ячеек (например,
D2:D100вместоE2:E100). Проверьте соответствие диапазона вашей таблице. - 🚫 Формат даты: Ячейки с датами отформатированы как текст. Решение: выделите колонку →
Главная→Формат ячеек→ выберите форматДата. - 🚫 Ошибка в имени листа: В коде указано
Sheets("Лист1"), а в файле лист называетсяSheet1или «Отчёт». Исправьте имя в макросе.
Как диагностировать проблему:
- Нажмите
Alt+F8, выберите макросWorkbook_Openи нажмитеВыполнить. Если появится ошибка, Excel укажет на проблемную строку. - Проверьте, сохранён ли файл как
.xlsm. Если нет, макросы не будут выполняться. - Убедитесь, что в колонке с датами нет пустых ячеек или текста (например, «н/д»). Добавьте в код проверку
If IsDate(cell.Value) Then.
MsgBox "Проверяю ячейку " & cell.Address & ": " & cell.Value
Это поможет понять, какие данные макрос «не видит».-->
7. Альтернативы: надстройки и Power Query
Если вам нужны расширенные уведомления (например, отправка писем или SMS), рассмотрите следующие инструменты:
- 📊 Power Automate (Microsoft Flow): Автоматически отправляет email-напоминания при изменении данных в Excel, хранящемся в OneDrive или SharePoint.
- 🔧 Надстройка «Excel Alerts»: Платное решение для создания календарей с уведомлениями (интеграция с Outlook).
- 📅 Google Sheets + Apps Script: Если вы готовы перейти на Google Таблицы, скрипты там проще в настройке для email-уведомлений.
Сравнение методов:
| Метод | Сложность | Автоматизация | Требует макросов | Подходит для |
|---|---|---|---|---|
| Проверка данных | ⭐ | Нет | Нет | Статичные подсказки |
| VBA (Workbook_Open) | ⭐⭐ | Да | Да | Напоминания при открытии |
| Условное форматирование | ⭐ | Нет | Нет | Визуальные подсказки |
| Power Automate | ⭐⭐⭐ | Да | Нет | Email/SMS-уведомления |
| Надстройки | ⭐⭐ | Да | Иногда | Расширенные сценарии |
FAQ: Частые вопросы
Можно ли сделать напоминание, которое появится через 5 дней после открытия файла?
Да, но для этого нужно сохранять дату последнего открытия файла в скрытой ячейке и сравнивать её с текущей датой. Пример кода:
Private Sub Workbook_Open()
Dim lastOpen As Date
lastOpen = ThisWorkbook.Sheets("Лист1").Range("Z1").Value
If Date - lastOpen >= 5 Then
MsgBox "Прошло 5 дней с последнего открытия!", vbInformation, "Напоминание"
ThisWorkbook.Sheets("Лист1").Range("Z1").Value = Date
End If
End Sub
Перед первым использованием введите в ячейку Z1 текущую дату: =TODAY().
Почему макрос не работает в Excel Online?
Excel Online не поддерживает выполнение VBA-макросов. Альтернативы:
- Используйте условное форматирование для визуальных подсказок.
- Перенесите файл в настольную версию Excel.
- Настройте уведомления через Power Automate (требуется OneDrive).
Как сделать напоминание для конкретного пользователя?
Добавьте в макрос проверку имени пользователя через функцию Environ("Username"):
If Environ("Username") = "IvanovII" Then
MsgBox "Это напоминание только для Иванова И.И.", vbInformation, "Личное уведомление"
End If
Имя пользователя берётся из учётной записи Windows.
Можно ли отправить напоминание по email из Excel?
Да, с помощью VBA и объекта Outlook.Application. Пример кода:
Sub SendEmailReminder()
Dim OutApp As Object, OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = "email@example.com"
.Subject = "Напоминание из Excel"
.Body = "Уважимый пользователь, не забудьте сдать отчёт до " & Range("D2").Value
.Send ' или .Display для ручной отправки
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
Важно: Для работы кода должен быть установлен Microsoft Outlook.
Как убрать всплывающее окно, если срок прошёл?
Добавьте в макрос условие на проверку просроченных дат:
If cell.Value >= today Then
MsgBox "Срок по задаче: " & cell.Offset(0, -1).Value
End If
Или используйте условное форматирование, чтобы просроченные задачи выделялись серым цветом.