Зачем файл? Просто подгоните код под свой формат даты - на работе у меня первая версия работала, дома такая работет: [vba]
Код
Sub del() Dim rng As Range, cmp As Date cmp = DateValue("01. " & Format(Date, "mm.yy")) With Worksheets("1").Range("B:B") Set rng = .Find(cmp, , LookIn:=xlFormulas, lookat:=xlWhole) If Not rng Is Nothing Then Do rng.EntireRow.Delete Set rng = .FindNext() Loop While Not rng Is Nothing End If End With End Sub
[/vba] Возможно это универсальный вариант...
P.S. Если в рабочем файле удаляться будет не одна строка, и если есть формулы, завязанные на строки этого диапазона- нужно на время процесса отключать пересчёт формул и обновление экрана.
Зачем файл? Просто подгоните код под свой формат даты - на работе у меня первая версия работала, дома такая работет: [vba]
Код
Sub del() Dim rng As Range, cmp As Date cmp = DateValue("01. " & Format(Date, "mm.yy")) With Worksheets("1").Range("B:B") Set rng = .Find(cmp, , LookIn:=xlFormulas, lookat:=xlWhole) If Not rng Is Nothing Then Do rng.EntireRow.Delete Set rng = .FindNext() Loop While Not rng Is Nothing End If End With End Sub
[/vba] Возможно это универсальный вариант...
P.S. Если в рабочем файле удаляться будет не одна строка, и если есть формулы, завязанные на строки этого диапазона- нужно на время процесса отключать пересчёт формул и обновление экрана.Hugo
После применения фильтра в макросе и перед удалением сколько было несвязанных диапазонов? Не больше 8192-х? Тогда да, все нормально. А вот если бы было больше, то таки ой.
После применения фильтра в макросе и перед удалением сколько было несвязанных диапазонов? Не больше 8192-х? Тогда да, все нормально. А вот если бы было больше, то таки ой._Boroda_
Да, это я понял. В принципе представить реально получаемые данные в таком перемешанном виде сложно. Но, от греха, добавляю предварительную сортировку.pabchek
"Учиться, учиться и еще раз учиться!" WM: R399923528092
Для себя нашел решение, как мне кажется, универсальное, т.е. если есть необходимость отфильтровать по колонке содержащей дату и не хочется запариваться с подгонкой формата: [vba]
Код
Sub month_del() mnth = CDate(Sheets("Лист1").Range("A1")) 'задаем дату для фильтра S = Sheets("Лист2").Range("A" & Rows.Count).End(xlUp).Row If Sheets("Лист1").Range("A1") = 0 Then Exit Sub 'На всякий случай, если забыл указать дату Sheets("Лист2").Select Range("$A:$N").AutoFilter Field:=3, Criteria1:=mnth 'Допустим 3-я колонка содержит даты для фильтра ActiveSheet.Range("A2:A" & S).SpecialCells(xlCellTypeVisible).EntireRow.Delete xlUp ActiveSheet.ShowAllData End Sub
[/vba] [p.s.]не стал здесь прописывать сортировку, принял это как обязательную данность
Для себя нашел решение, как мне кажется, универсальное, т.е. если есть необходимость отфильтровать по колонке содержащей дату и не хочется запариваться с подгонкой формата: [vba]
Код
Sub month_del() mnth = CDate(Sheets("Лист1").Range("A1")) 'задаем дату для фильтра S = Sheets("Лист2").Range("A" & Rows.Count).End(xlUp).Row If Sheets("Лист1").Range("A1") = 0 Then Exit Sub 'На всякий случай, если забыл указать дату Sheets("Лист2").Select Range("$A:$N").AutoFilter Field:=3, Criteria1:=mnth 'Допустим 3-я колонка содержит даты для фильтра ActiveSheet.Range("A2:A" & S).SpecialCells(xlCellTypeVisible).EntireRow.Delete xlUp ActiveSheet.ShowAllData End Sub
[/vba] [p.s.]не стал здесь прописывать сортировку, принял это как обязательную данностьpabchek
"Учиться, учиться и еще раз учиться!" WM: R399923528092