Здравствуйте! Помогите пожалуйста сделать следующее, если можно, то с комментариями (планирую поразбираться): По двойному щелчку в ячейке с Фамилией из столбца "ВОД" или "ЗАК" должна происходить сортировка колонок. Т.е. что бы соответствующие строки оказывались наверху, соответствующие ячейки выделялись цветом, упорядочивались по дате.
Здравствуйте! Помогите пожалуйста сделать следующее, если можно, то с комментариями (планирую поразбираться): По двойному щелчку в ячейке с Фамилией из столбца "ВОД" или "ЗАК" должна происходить сортировка колонок. Т.е. что бы соответствующие строки оказывались наверху, соответствующие ячейки выделялись цветом, упорядочивались по дате.
P.S. Как и прежде, заранее благодарен.kirill-kibor
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If (Target.Column = 5 Or Target.Column = 6) And Target.Value <> "" Then 'Проверяем, попали ли в фамилию Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 11)).AutoFilter Field:=Target.Column, Criteria1:=Target.Value 'Если попали, отфильтровываем её Cancel = True 'И не даём "провалиться" в ячейку End If
End Sub
[/vba]
Держите. [vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If (Target.Column = 5 Or Target.Column = 6) And Target.Value <> "" Then 'Проверяем, попали ли в фамилию Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 11)).AutoFilter Field:=Target.Column, Criteria1:=Target.Value 'Если попали, отфильтровываем её Cancel = True 'И не даём "провалиться" в ячейку End If
А чем штатное средство сброса фильтров не устраивает?: Данные--сортировка и фильтр -- очистить? Если макросом все же нужно: [vba]
Код
ActiveSheet.ShowAllData
[/vba] И в Ваш код можно "вшить" - будет работать по двойному клику не на 5-6м столбцу: [vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If (Target.Column = 5 Or Target.Column = 6) And Target.Value <> "" Then Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 11)).AutoFilter Field:=Target.Column, Criteria1:=Target.Value Cancel = True Else ActiveSheet.ShowAllData Cancel = True End If End Sub
А чем штатное средство сброса фильтров не устраивает?: Данные--сортировка и фильтр -- очистить? Если макросом все же нужно: [vba]
Код
ActiveSheet.ShowAllData
[/vba] И в Ваш код можно "вшить" - будет работать по двойному клику не на 5-6м столбцу: [vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If (Target.Column = 5 Or Target.Column = 6) And Target.Value <> "" Then Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 11)).AutoFilter Field:=Target.Column, Criteria1:=Target.Value Cancel = True Else ActiveSheet.ShowAllData Cancel = True End If End Sub