Страницы: 1
RSS
Номер выбранного поля автофильтра
 
Здравствуйте . Хочу написать макрос, который снимает фильтрацию автофильтра по столбцу где выбрана ячейка. Для этого мне надо определить номер поля автофильтра в котором находится активная ячейка. Смог сделать код который работает только в книге где один лист, если два листа не работает
Код
Sub Отобразить()
If Worksheets(1).AutoFilterMode = True Then
 Set iFilterRange = Worksheets(1).AutoFilter.Range ' диапазон к которому применён автофильтр
End If
iPosition = InStr(iFilterRange.Address, ":"    - 1
IRange = Left(iFilterRange.Address, iPosition) 'первая ячейка диапазона к которому применён автофильтр
iColumn = Range(IRange).Column 'столбец в котором расположено первое поле автофильтра
 Selection.AutoFilter Field:=ActiveCell.Column - iColumn + 1 'снимаю фильтрацию
End Sub
Подскажите как определить номер поля автофильтра в столбце которого находится выбранная ячейка, в книге где несколько листов.
Или определить номер столбца в котором расположено первое поле автофильтра (самое левое поле).
Excel всемогущий.
 
Код
Option Explicit 'настоятельно рекомендую включить
                'Tools - Options - Require variable declaration

Sub Отобразить()
Dim iFilterRange As Range, i As Long

On Error GoTo конец  '<<<!!!
Set iFilterRange = ActiveSheet.AutoFilter.Range

i = ActiveCell.Column - iFilterRange.Column + 1   'позиция ячейки в диапазоне автофильтра
If i > 0 And i <= iFilterRange.Columns.Count Then 'на самом деле можно не проверять,
                                                  'если i не попадет в интервал,
                                                  'будет выход по ошибке
  iFilterRange.AutoFilter field:=i
End If
конец:

End Sub
 
Изменено: Казанский - 22.02.2014 12:28:01
 
Короче

Код
Sub Отобразить()
On Error GoTo конец
With ActiveSheet.AutoFilter.Range
  .AutoFilter field:=ActiveCell.Column - .Column + 1
End With

конец:
End Sub
 
 
Казанский, большое спасибо работает как надо.
Excel всемогущий.
Страницы: 1
Читают тему
Наверх