Re: Можно ли упростить
Добавлено: 30 июл 2008, 05:04
Позволю себе тоже подискутировать на эту тему. Безусловно, что подсчитывать количество используемых строк (UsedRange.Rows.Count) не подходит. Так, например, если используются строки с 5 по 8, то получим значение 4. Корректировать, т.е. проводить еще одну математическую операцию, нерационально.
Если речь идет об экономии того ничтожного времени, которое тратит Excel на подсчет количества строк, то для определения последней заполненной строки лучше вообще не использовать свойство Count. Если применить метод ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row, то будет чуть быстрее, за счет того, что Excel, где-то у себя в "недрах" хранит это значение и выдает его мгновенно. Правда, нужно заметить, что если, например, ввести данные в ячейку, расположенную "ниже" диапазона UsedRange, а затем очистить эту ячейку, то предлагаемый метод вернет номер строки этой ячейки. Но для определения, например, последней заполненной строки столбца "A", используя ошибки не будет. Т.е. таким образом, мы не привязаны к общему количеству строк (2003 или 2007) и не тратим время на свойство Count.
Если речь идет об экономии того ничтожного времени, которое тратит Excel на подсчет количества строк, то для определения последней заполненной строки лучше вообще не использовать свойство Count. Если применить метод ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row, то будет чуть быстрее, за счет того, что Excel, где-то у себя в "недрах" хранит это значение и выдает его мгновенно. Правда, нужно заметить, что если, например, ввести данные в ячейку, расположенную "ниже" диапазона UsedRange, а затем очистить эту ячейку, то предлагаемый метод вернет номер строки этой ячейки. Но для определения, например, последней заполненной строки столбца "A", используя
Код: Выделить всё
Cells(Cells.SpecialCells(xlCellTypeLastCell).Row, "A").End(xlUp).Row