Помогите с макросом, вроде не сложный, но я не очень в них(((. Нужен макрос который бы скрывал строки, у которых в столбце "М" дата выше сегодняшней.
Помогите с макросом, вроде не сложный, но я не очень в них(((. Нужен макрос который бы скрывал строки, у которых в столбце "М" дата выше сегодняшней.enchanter54
devilkurs, вроде да, ну а если количество строк будет увеличиваться, что-то надо в макросе править? Столбцы как есть так и будут, а вот строки могут увеличиваться.
devilkurs, вроде да, ну а если количество строк будет увеличиваться, что-то надо в макросе править? Столбцы как есть так и будут, а вот строки могут увеличиваться.enchanter54
enchanter54, Константой установлена строка № 5 (с которой начинает проверять даты) Последняя строка определяется автоматом из учета последняя заполненная ячейка по столбцу М
Открываются строки, определяя верхнюю и нижнюю строки аналогично верхнего алгоритма
[vba]
Код
Sub Entire() Dim DnR%, D(), i% Const UpR = 5 'начальная строка, с которой начнем проверять даты DnR = Cells(Rows.Count, 13).End(xlUp).Row 'определим последнюю заполненную ячейку по столбцу М (он под 13 номером)
D = Range("M" & UpR & ":M" & DnR).Value 'для скорости, возьмем в массив все даты из столбца М For i = 1 To UBound(D, 1) 'в цикле переберем все даты If D(i, 1) > Date Then'сравниваем дату из таблицы с сегодняшней датой Rows(i + UpR - 1 & ":" & i + UpR - 1).EntireRow.Hidden = True 'если больше чем сегодня - скрываем End If Next i End Sub
Sub Entire2() Dim DnR% Const UpR = 5 'начальная строка, с которой начнем проверять даты DnR = Cells(Rows.Count, 13).End(xlUp).Row 'определим последнюю заполненную ячейку по столбцу М (он под 13 номером)
Rows(UpR & ":" & DnR).EntireRow.Hidden = False 'откроем строки End Sub
[/vba]
enchanter54, Константой установлена строка № 5 (с которой начинает проверять даты) Последняя строка определяется автоматом из учета последняя заполненная ячейка по столбцу М
Открываются строки, определяя верхнюю и нижнюю строки аналогично верхнего алгоритма
[vba]
Код
Sub Entire() Dim DnR%, D(), i% Const UpR = 5 'начальная строка, с которой начнем проверять даты DnR = Cells(Rows.Count, 13).End(xlUp).Row 'определим последнюю заполненную ячейку по столбцу М (он под 13 номером)
D = Range("M" & UpR & ":M" & DnR).Value 'для скорости, возьмем в массив все даты из столбца М For i = 1 To UBound(D, 1) 'в цикле переберем все даты If D(i, 1) > Date Then'сравниваем дату из таблицы с сегодняшней датой Rows(i + UpR - 1 & ":" & i + UpR - 1).EntireRow.Hidden = True 'если больше чем сегодня - скрываем End If Next i End Sub
Sub Entire2() Dim DnR% Const UpR = 5 'начальная строка, с которой начнем проверять даты DnR = Cells(Rows.Count, 13).End(xlUp).Row 'определим последнюю заполненную ячейку по столбцу М (он под 13 номером)
Rows(UpR & ":" & DnR).EntireRow.Hidden = False 'откроем строки End Sub
Public Sub www() With Range("m4:m" & Cells(Rows.Count, 1).End(xlUp).Row) If .Parent.AutoFilterMode = 0 Then .AutoFilter 1, "<=" & CLng(Date), , , False Else .AutoFilter End With End Sub
[/vba]
А если так. все одной кнопкой: [vba]
Код
Public Sub www() With Range("m4:m" & Cells(Rows.Count, 1).End(xlUp).Row) If .Parent.AutoFilterMode = 0 Then .AutoFilter 1, "<=" & CLng(Date), , , False Else .AutoFilter End With End Sub