Код |
---|
Option Explicit Sub nextBirthday_All() Dim i As Long Dim iLR As Long Dim ДатаРождения As Date Dim Лет As Integer Dim ws As Worksheet Dim iLastRow As Long Dim wsDR As Worksheet Set wsDR = ThisWorkbook.Worksheets("ДР") ' лист для вывода результатов With Application .ScreenUpdating = False .Calculation = xlCalculationManual ' Очистка диапазона на листе "ДР" wsDR.Range(wsDR.Cells(2, 1), wsDR.Cells(wsDR.Rows.Count, 9)).ClearContents ' Перебор всех листов, кроме "ДР" и "Титульный" For Each ws In ThisWorkbook.Worksheets If ws.Name <> "ДР" And ws.Name <> "Титульный" Then ' Находим последнюю заполненную строку в столбце A на текущем листе iLastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ' Перебор строк For i = 2 To iLastRow If ws.Cells(i, "F").Value <> "" And IsDate(ws.Cells(i, "F").Value) Then If DateSerial(Year(Date), Month(ws.Cells(i, "F")), Day(ws.Cells(i, "F"))) - Date >= 0 And _ DateSerial(Year(Date), Month(ws.Cells(i, "F")), Day(ws.Cells(i, "F"))) - Date < 45 Then ' Найти следующую пустую строку на листе ДР iLR = wsDR.Cells(wsDR.Rows.Count, "A").End(xlUp).Row + 1 ' Копировать значения wsDR.Cells(iLR, "A").Resize(1, 7).Value = ws.Cells(i, "B").Resize(1, 7).Value ' Вычисляем количество лет ДатаРождения = ws.Cells(i, "F").Value Лет = DateDiff("yyyy", ДатаРождения, Date) If Month(Date) < Month(ДатаРождения) Then Лет = Лет - 1 ElseIf Month(Date) = Month(ДатаРождения) And Day(Date) < Day(ДатаРождения) Then Лет = Лет - 1 End If wsDR.Cells(iLR, "H").Value = Лет wsDR.Cells(iLR, "I").Value = Day(ДатаРождения) & " " & MonthName(Month(ДатаРождения)) ' Вспомогательный столбец для сортировки wsDR.Cells(iLR, "J").Value = DateSerial(Year(Date), Month(ДатаРождения), Day(ДатаРождения)) If wsDR.Cells(iLR, "J").Value < Date Then wsDR.Cells(iLR, "J").Value = DateSerial(Year(Date) + 1, Month(ДатаРождения), Day(ДатаРождения)) End If End If End If Next i End If Next ws ' Сортировка на листе "ДР" iLR = wsDR.Cells(wsDR.Rows.Count, "A").End(xlUp).Row If iLR > 1 Then wsDR.Sort.SortFields.Clear Dim sortRange As Range Set sortRange = wsDR.Range("A2:J" & iLR) wsDR.Sort.SortFields.Add Key:=wsDR.Range("J2:J" & iLR), _ SortOn:=xlSortOnValues, _ Order:=xlAscending, _ DataOption:=xlSortNormal With wsDR.Sort .SetRange sortRange .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End If ' Очистка вспомогательного столбца wsDR.Range("J2:J" & iLR).ClearContents .Calculation = xlCalculationAutomatic .ScreenUpdating = True End With End Sub |
Показать дни рождения, в ближайшие 45 дней, учитывая все таблицы
Ошибка 91 "Object variable or With block variable not set", Возникает при явно определенных переменных
01.09.2025 15:49:00
syt navy, Каков был файл пример таков был и ответ. Что там в правилах форума пишется про файл пример,
Изменено: |
|
|
Ошибка 91 "Object variable or With block variable not set", Возникает при явно определенных переменных
Выпадающие списки с возможностью добавления новых значений, Несколько списков на разных листах
30.08.2025 07:08:53
P S. Ваш файл пример не смотрел.
Изменено: |
|||
|
Синхронизация автофильтров
29.08.2025 10:49:33
syt navy, Пробуйте такой вариант, но без времени, только по датам.
|
|||
|
Синхронизация автофильтров
My DEAR Comrads, Есть Тема
28.08.2025 11:44:44
|
|||
|
Как запретить в носить дату в ячейку, если эта дата она имеется в соседней
27.08.2025 07:37:35
Valery37, Примерно так:
Изменено: |
|||
|
При переносе строки Alt+Enter выполнить условие (VBA)
26.08.2025 11:33:02
Скорее всего у вас ошибка в синтаксе в данной строке:
Вот так правильно считает переносы:
Изменено: |
|||||||
|
Сборка таблиц с разными шапками из нескольких книг, Ключевым - создание справочника, но как если столбцов 250
26.08.2025 08:07:22
neurologkhv, Думаю что никак. Так как неизвестно какие у вас там в просматириваемых файлах шапки колонок. Заранее это предусмотреть всевозможные варианты не получится.
|
|
|
Не запускается автомакрос
18.08.2025 12:54:55
agregator, А зачем
|
|||
|
ComboBox в VBA, Код макроса в ComboBox-е возвращает на начало процедуры
18.08.2025 09:51:35
|
|||
|
Не отображаются макросы в меню ALT+F8
ComboBox в VBA, Код макроса в ComboBox-е возвращает на начало процедуры
17.08.2025 09:53:45
![]() ![]() По теме:
Изменено: |
|||||
|
ComboBox в VBA, Код макроса в ComboBox-е возвращает на начало процедуры
ComboBox в VBA, Код макроса в ComboBox-е возвращает на начало процедуры
16.08.2025 18:06:11
|
|||||
|
Как при загрузки формы выставлять флажок в CheckBox по значению из ячейки
16.08.2025 17:04:49
Изменено: |
|||
|
ComboBox в VBA, Код макроса в ComboBox-е возвращает на начало процедуры
15.08.2025 23:01:56
Изменено: |
|||
|
Как в EXCEL с помощью VBA прописать MsgBox, который будет выдавать кол-во правок?
15.08.2025 12:43:50
Hugo, Дал нориальную идею насчёт
|
|||
|
Макрос выбора файла в каталоге заменить на папку текущего файла
Макрос выбора файла в каталоге заменить на папку текущего файла
12.08.2025 08:22:34
|
|||
|
VBA. Записанный макрос сделать универсальным, Макрос, работа в другой ячейке
06.08.2025 15:33:12
Учил, подсказывал раньше и всё напрасно...
|
|||
|
VBA. Записанный макрос сделать универсальным, Макрос, работа в другой ячейке
04.08.2025 21:30:54
ktyehf, Доброго времени суток. Из той же прошлой серии, вариант:
Упс, подставьте свои имена листов (кодовые имена).
Изменено: |
|||
|
Некорректно работает сортировка, Не работает сортировка по возрастанию, убыванию...
02.08.2025 13:09:59
Mr.dupen, Доброго времени суток. Предлагаю вариант без использования формул. Следуйщий код внесите в модель листа ЕдР, предварительно очистив все данные начиная с 3-ей строки!
Изменено: |
|||||
|
Удаление фильтра на защищенном листе
Автоматическое изменение рабочих файлов эксель на основании изменений шаблона, Изменение рабочих файлов проектов при редактировании шаблона (добавление новых строк, столбцов, изменении формул и пр.)
21.07.2025 14:11:09
|
|||||
|
Автоматическое изменение рабочих файлов эксель на основании изменений шаблона, Изменение рабочих файлов проектов при редактировании шаблона (добавление новых строк, столбцов, изменении формул и пр.)
21.07.2025 11:51:56
Изменено: |
|||||
|
Разница между датами с учетом рабочего дня
Объединение файлов с удалением данных.
17.07.2025 16:14:56
pliplim,
|
|||
|
Извлечь все данные из выпадающего списка