Страницы: 1
RSS
Определить последнею строку после фильтра,
 
Здравствуйте.

Как определить последнею строку после применения фильтра на столбце госномер?
Заранее благодарен
 
.Cells(.Rows.Count, 6).End(xlUp).Row
 
2 vikttur, а не факт:) Вдруг надо не на листе, а именно последнюю видимую.
тогда вероятно так:
.Cells(.Rows.Count, 6).End(xlUp).SpecialCells(xlCellTypeVisible).Row
По ссылке коллекция вариантов по определению последней строки.
'ZVI:2009-01-11 Last cell/row/col with constant / formula / comment
'Also refer to: http://www.planetaexcel.ru/forum.php?thread_id=8203
 
Цитата
Igor67 написал: Вдруг надо не на листе, а именно последнюю видимую
А вариант Вити и возвращает последнюю видимую :)
А вот если надо реальную последнюю - проще циклом на заполненность проверять. Но все всегда зависит от ситуации.
Вот здесь я приводил несколько наиболее распространенных вариантов: Как определить последнюю ячейку на листе через VBA?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Реально последнюю можно еще с использованием размера пользовательского диапазона:  UsedRange.Rows.Count
 
Мне нужно определить видимую последнею строку.
Код
Sub region()
Dim lastrow As Integer

ActiveSheet.ListObjects("Таблица22").Range.AutoFilter Field:=6, Criteria1:= _
        "233 BS 02"
        
lastrow = ActiveSheet.Cells(Rows.Count, 6).End(xlUp).SpecialCells(xlCellTypeVisible).Row
MsgBox (lastrow)

End Sub

все работает, но не то определил, так как последняя строка на 6 колонке является 3561
vikttur как прописать через UsedRange.Rows.Count?
 
UsedRange.Rows.Count - количество строк в рабочем диапазоне. Скрыты, не скрыты - все равно.
Цитата
но не то определил
Я того, что Вы написали, не советовал...

Форум по Excel, а Вы картинками кидатесь. Правильно это?
 
Цитата
vikttur написал:
UsedRange.Rows.Count - количество строк в рабочем диапазоне.
UsedRange надо использовать с осторожностью. Пример - во вложении.
There is no knowledge that is not power
 
Всем огромное спасибо за участие и за помощь, по одной из ссылок, я нашел то что я искал.
Вдруг если кому не будь понадобиться именно так, то пример вот:
Код
Sub region()
Dim lastrow As Integer

ActiveSheet.ListObjects("Таблица22").Range.AutoFilter Field:=6, Criteria1:= _
        "233 BS 02"
lastrow = ActiveSheet.Cells(1, 6).SpecialCells(xlLastCell).Row
MsgBox (Cells(lastrow, 3))
End Sub

Люди не судите строго, пишем как умеем.
Изменено: Aidyn86 - 29.11.2015 19:54:59
 
Aidyn86, не нужно писать через строку - какой смысл? А вот код следует оформлять соответствующим тегом - ищите такую кнопку <...>
 
У ListObject есть свойства Range и DataBodyRange - оттуда и можно взять количество строк.
There is no knowledge that is not power
 
Цитата
UsedRange надо использовать с осторожностью
Ну да. Потому и писал, что можно использовать, а не "определить с помощью". Oт полученного числа отнимать количесво пустых строк пред диапазоном, количество незаполненных после диапазона...
 
Цитата
vikttur написал:
Oт полученного числа отнимать количесво пустых строк пред диапазоном, количество незаполненных после диапазона...
Что-то тут загнуто... Откуда ТС может знать, сколько пустых строк до или после? :) Если взять мой пример из сообщения 11, то там пока макрос не запустишь, не разберёшься, что внизу ещё лишние 10 строк мотаются.  :D
There is no knowledge that is not power
 
Я только подтвердил, что
Цитата
UsedRange надо использовать с осторожностью
 
После нескольких использования, макрос перестает определять последнею строку. Подскажите пожалуйста, в чем может быть причина.  

пример прикреплен.
После запуска формы, выбираем марку автомобиля, и в  "показания спидометра" (правая верхняя сторона) должно прописаться последняя запись по спидометру.  

Я только только учусь VBA.  
 
Ну вроде бы всё ОК. Выбираю Lada FS015l A21-40 (233 BS 02). В спидометр выводится 3561. И что тут не так?
There is no knowledge that is not power
 
Когда нажимаешь кнопку очистить, выходило ошибка, которая указывала на эту команду
Код
befor.Value = ActiveSheet.Cells(lastrow, 4)
после чего, я за комментировал команду и ошибка пропала, но соответственно, при нажатий кнопки очистить,  в строке "показания спидометра" не удаляется данные.
Код
'befor.Value = ""
Страницы: 1
Наверх