Страницы: 1
RSS
как определить номер первой строки после фильтрации
 
Здравствуйте.  
Я макросом фильтрую некоторым образом данные на листе. Далее после этого требуется определить номер первой отображаемой строки в этом листе (в смысле первой после заголовка).  
 
Подскажите пожалуйста как это можно сделать?
 
Вариант. Попробуйте циклом^  
Если текущая ячейка .hidden = False Then  
MsgBox i  
Exit Sub
 
или columns(1).specialcells(xlvisible).cells(1).row
Живи и дай жить..
 
или даже просто    
Columns(1).SpecialCells(xlVisible).Row
Живи и дай жить..
 
{quote}{login=слэн}{date=17.02.2010 12:55}{thema=}{post}или даже просто    
Columns(1).SpecialCells(xlVisible).Row{/post}{/quote}  
 
Не совсем понятно, что именно выдаст эта конструкция?
 
смотрим на топик...  
 
 
или вводим код и смотрим.. как больше нравится..  
 
 
хотя иногда может показать и небо с овчинку
Живи и дай жить..
 
{quote}{login=слэн}{date=17.02.2010 02:14}{thema=}{post}смотрим на топик...  
 
 
или вводим код и смотрим.. как больше нравится..  
 
 
хотя иногда может показать и небо с овчинку{/post}{/quote}  
 
Я правильно понял, что после фильтрации надо написать:  
a = ActiveWorkbook.ActiveSheet.Columns(1).SpecialCells(xlVisible).Row  
 
a в этом случае равно 1..
 
Sub Макрос1()  
Dim iFirstRow As Long  
   With ActiveSheet.AutoFilter.Range  
       iFirstRow = .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).SpecialCells(xlCellTypeVisible).Row  
       MsgBox "Номер первой строки в отфильтрованном диапазоне равен: " & iFirstRow, , ""  
   End With  
End Sub
 
Если ActiveSheet, то это уже ActiveWorkBook - не надо нагромождать.
 
Поторопились гуру-аксакалы :)  
Есть же еще заголовок автофильтра и сам он может быть не с первой строки  
Поэтому как-нибудь так:  
With ActiveSheet.AutoFilter.Range  
y = Range(.Offset(1, 0), Cells(.Row + .Rows.Count - 1, .Column)).SpecialCells(xlVisible).Row  
End With  
Наверно, можно изячнее :)
Bite my shiny metal ass!      
 
гмм..  :)  
 
точно..  
 
вот так работает, но уже далеко не так просто, хотя и все еще одной строкой  
 
IIf(ActiveSheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Areas(1).Count > 1, _  
   ActiveSheet.AutoFilter.Range.Row + 1, ActiveSheet.AutoFilter.Range.Columns(1).Cells.SpecialCells(xlCellTypeVisible).Areas(2).Cells(1).Row)
Живи и дай жить..
 
Спасибо.
Страницы: 1
Читают тему
Наверх