Проверяем срок годности лекарств, семян, средств защиты растений или других товаров, размещенных в умной таблице, с помощью кода VBA Excel.
Для многих товаров приходится контролировать сроки их годности. Это и лекарства, и семена овощей и цветов, и средства защиты растений, и другие товары. Список имеющихся в наличии товаров с указанием их срока годности удобно хранить в умной таблице Excel. А с помощью кода VBA можно легко проверить товары из списка на наличие просрочки.
Условие задачи
Проверка срока годности особенно актуальна для лекарственных препаратов, так как от них зависит наше здоровье. Поэтому в качестве примера для проверки срока годности товаров будем использовать список лекарств.
Условие задачи по проверке срока годности лекарственных препаратов и БАД
1. Есть умная таблица с именем «Таблица2» на листе «Лист6» со списком лекарственных препаратов и БАД и кнопкой «Проверить срок годности»:
2. Необходимо с помощью кода VBA Excel сравнить даты из второго столбца таблицы с текущей датой и отметить в третьем столбце просроченные лекарства красным цветом, с заканчивающимся сроком годности — желтым цветом. Текущая дата, когда проводилось сравнение, указана рядом с таблицей.
Решение задачи
Код VBA Excel для проверки срока годности лекарственных препаратов и БАД, срабатывающий при нажатии кнопки «Проверить срок годности»:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
Private Sub CommandButton1_Click() Dim myCell As Range 'Запускаем цикл обхода ячеек второго столбца умной таблицы For Each myCell In ThisWorkbook.Sheets("Лист6").Range("Таблица2").Columns(2).Cells 'Если месяц и год срока годности равен месяцу и году текущей даты, 'окрашиваем ячейку справа в желтый цвет и добавляем значение "Последний месяц" If Format(myCell, "MM.YYYY") = Format(Now, "MM.YYYY") Then With myCell.Offset(0, 1) .Interior.Color = vbYellow .Value = "Последний месяц" End With 'ИначеЕсли месяц и год срока годности не равен месяцу и году текущей даты, 'а значение срока годности меньше текущей даты, 'тогда окрашиваем ячейку справа в красный цвет и добавляем значение "Просрочено" ElseIf Format(myCell, "MM.YYYY") <> Format(Now, "MM.YYYY") And myCell < Now Then With myCell.Offset(0, 1) .Interior.Color = vbRed .Value = "Просрочено" End With 'В остальных случаях очищаем ячейку справа от заливки и значения Else With myCell.Offset(0, 1) .Interior.Color = xlNone .Value = "" End With End If Next End Sub |
Обратите внимание, что для умной таблицы недостаточно указать только столбец, но и необходимо сослаться на коллекцию ячеек — «Cells», входящую в этот столбец.
Результат работы кода:
На самом деле, в данную таблицу с лекарственными препаратами можно добавить еще колонки: «Рекомендации по применению», «Начало приема», «Конец приема».