Поиск последней ячейки в Excel

Программирование на Visual Basic for Applications
kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Поиск последней ячейки в Excel

Сообщение kminas » 25.04.2006 (Вт) 21:31

К сожалению, пока самостоятельно не получается. Имеется таблица Columns A-E. Заполняю её макросами. После выполнения очередного макроса, необходимо находить последнюю непустую ячейку в этом диапазоне и ставить курсор в столбец "А" ниже нее на 2 строки.
Константин

smaharbA
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 16.06.2005 (Чт) 5:08

Сообщение smaharbA » 25.04.2006 (Вт) 22:47

thisworkbook.worksheets(1).usedrange
Я конечно далек от мысли...(с)

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 25.04.2006 (Вт) 23:19

Спасибо, буду пробовать.
Константин

Alter
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 01.03.2005 (Вт) 14:51

Сообщение Alter » 26.04.2006 (Ср) 11:01

Cells(Cells.SpecialCells(xlCellTypeLastCell).Row + 1 + 2, 1).Select

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 26.04.2006 (Ср) 20:16

Спасибо
Константин

Annushka
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 17.05.2005 (Вт) 12:44
Откуда: Украина

Сообщение Annushka » 27.04.2006 (Чт) 12:58

Alter писал(а):Cells(Cells.SpecialCells(xlCellTypeLastCell).Row


К сожалению, возвращает не последнюю заполненную строчку, а последнюю строчку, с которой что-то делали (форматирование, границы и т.д.).
Заодно и вопрос. Не могу найти функцию, которая возвращала бы последнюю заполненную строчку, невзирая на форматирование, границы и т.д.) Такая имеется?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.04.2006 (Чт) 13:03

Имеется.
Вопрос в том, что разуметь под заполненной областью и откуда её исчислять.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 27.04.2006 (Чт) 13:04

Если в таблице нет пустых ячеек, то может помочь что-то вроде

Код: Выделить всё
Range("A1").End(xlDown).End(xlToRight).Select


А так - наверное, макросом только.
Быть... или не быть. Вот. В чём вопрос?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.04.2006 (Чт) 13:09

Нет, это плохо...
cells(1,1).currentregion
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

$€rg
Обычный пользователь
Обычный пользователь
 
Сообщения: 99
Зарегистрирован: 11.01.2006 (Ср) 10:15
Откуда: Санкт-Петербург

Сообщение $€rg » 27.04.2006 (Чт) 13:34

cells(1,1).CurrentRegion.End(xlDown).EntireRow
типа итого чтоли
процесс печатания программного кода укрепляет моральные устои С. Каммингс VBA4Dummies
:study:

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 27.04.2006 (Чт) 13:44

О, не знал такую штуку :)
Быть... или не быть. Вот. В чём вопрос?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.04.2006 (Чт) 13:53

Нет, и это плохо...
cells(1,1).CurrentRegion.rows(cells(1,1).CurrentRegion.rows.count).entirerow
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

inq
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 185
Зарегистрирован: 12.04.2006 (Ср) 7:50
Откуда: 78

Сообщение inq » 27.04.2006 (Чт) 13:59

А если просто
ActiveCell.SpecialCells(xlCellTypeConstants).Select

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.04.2006 (Чт) 14:04

А это сюда, простите, каким боком?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

$€rg
Обычный пользователь
Обычный пользователь
 
Сообщения: 99
Зарегистрирован: 11.01.2006 (Ср) 10:15
Откуда: Санкт-Петербург

Сообщение $€rg » 27.04.2006 (Чт) 14:06

GSerg
гм, стесняюсь спросить, типа почему.., чтоб понимать..
процесс печатания программного кода укрепляет моральные устои С. Каммингс VBA4Dummies
:study:

inq
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 185
Зарегистрирован: 12.04.2006 (Ср) 7:50
Откуда: 78

Сообщение inq » 27.04.2006 (Чт) 14:09

GSerg
выбираем все заполненные констатами ячейки

не то?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.04.2006 (Чт) 14:12

inq
Прочитать топик от начала до конца может стоит тебе?..
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

inq
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 185
Зарегистрирован: 12.04.2006 (Ср) 7:50
Откуда: 78

Сообщение inq » 27.04.2006 (Чт) 14:22

GSerg

Annushka писал(а):[Заодно и вопрос. Не могу найти функцию, которая возвращала бы последнюю заполненную строчку, невзирая на форматирование, границы и т.д.) Такая имеется?


Из полученного range и узнаем.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.04.2006 (Чт) 14:25

То есть, иметь в последней строке формулы непозволительно?..
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Annushka
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 17.05.2005 (Вт) 12:44
Откуда: Украина

Сообщение Annushka » 27.04.2006 (Чт) 14:26

inq, ключевое слово "ЗАПОЛНЕННУЮ"

inq
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 185
Зарегистрирован: 12.04.2006 (Ср) 7:50
Откуда: 78

Сообщение inq » 27.04.2006 (Чт) 14:29

Ну да, минус

Ну так у твоего варианта

Код: Выделить всё
cells(1,1).CurrentRegion.rows(cells(1,1).CurrentRegion.rows.count).entirerow

не все безупречно, если в таблице есть "пробелы"

Annushka
понятно )
тогда да...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.04.2006 (Чт) 14:30

О чём и было сказано гораздо выше...
GSerg писал(а):Вопрос в том, что разуметь под заполненной областью и откуда её исчислять.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Annushka
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 17.05.2005 (Вт) 12:44
Откуда: Украина

Сообщение Annushka » 27.04.2006 (Чт) 14:37

GSerg, произвольно заполненная область. Интересует последняя непустая строка.
Объясню, откуда задача. Делала шаблон для заполнения (шапка, таблица), до 1000 строки отформатировала и убрала границы. Теперь нужно обработать достаточно много таких файлов, хожу по заполненным таблицам и чего-то там делаю. Но ходит теперь в каждом файле по всем 1000 строкам, а хотелось бы до последней непустой.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.04.2006 (Чт) 14:41

И не известна ни одна ячейка, которая всегда принадлежит заполненной области (первая, например)?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Annushka
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 17.05.2005 (Вт) 12:44
Откуда: Украина

Сообщение Annushka » 27.04.2006 (Чт) 15:00

Известно, конечно, но есть пробельные строки внутри нужной области

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 27.04.2006 (Чт) 15:16

Опиши словами, как ты определяешь, что данная область - нужная?
Lasciate ogni speranza, voi ch'entrate.

Annushka
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 17.05.2005 (Вт) 12:44
Откуда: Украина

Сообщение Annushka » 27.04.2006 (Чт) 15:22

С 15 строки и до последней заполненной

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 27.04.2006 (Чт) 15:24

А последняя заполненная -- это какая?
Та, что перед первой пустой строкой? Или та, после которой нет никаких данных?
Lasciate ogni speranza, voi ch'entrate.

Annushka
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 17.05.2005 (Вт) 12:44
Откуда: Украина

Сообщение Annushka » 27.04.2006 (Чт) 15:31

Та, после которой нет никаких данных

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 27.04.2006 (Чт) 15:37

Я в свое время делал Cells(65536, lCol).End(xlUp).Select
Минус, что lCol приходилось перебирать
Последний раз редактировалось Nicky 27.04.2006 (Чт) 15:53, всего редактировалось 1 раз.

След.

Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 57

    TopList