![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Участник клуба
Регистрация: 17.07.2009
Сообщений: 1,088
|
![]()
Rows.Count - это конструкция уровня приложения. Ссылаться будет на кол-во строк, максимально допустимое в той версии Excel, в которой открыт документ. Я обычно использую не просто Rows.Count, а ActiveSheet.Rows.Count или ссылку на тот лист, с которого считываю/записываю данные. Иначе, при работе в Excel 2007 с документом 2003 обращение к данным с Rows.Count(без явного указания листа данных) вызовет ошибку, т.к. в документе гораздо меньше строк...
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru |
![]() |
![]() |
![]() |
#12 | |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]() Цитата:
Для 2003 - это диапазон ячеек с "A1" по Cells(65536, N) Rows.Count - это константа, равная количеству строк на листе. Естественно, для 2003 и 2007 это разные числа. Так, например, если требуется определить последнюю заполненную ячейку в столбце "A" и мы не знаем, какая версия Excel установлена у пользователя, то применение выражения Cells(Rows.Count, 1).End(xlUp) будет работать корректно, не зависимо от версии Excel. В то время, как [A65536].End(xlUp) для версии 2007 может вернуть не правильный результат. А выражение [A1048576].End(xlUp) для версии 2003 и вовсе выдаст ошибку.
Чем шире угол зрения, тем он тупее.
|
|
![]() |
![]() |
![]() |
#13 |
Форумчанин
Регистрация: 24.03.2010
Сообщений: 349
|
![]()
Смысл не в том, к чему мы обращаемся, а к объёму!
Выражением ActiveSheet.Rows.Count мы обращаемся к объёму вот 65536 до МИЛЛИОНА строк. Потом мы этот объём копируем в массивы, сортируем, обрабатываем. Учитывая, что многие темы здесь задаются начинающими, то эту ошибку они потянут в свои программы и будут жаловаться о медленной работе и ошибках. Можно использовать выражение ActiveSheet.Rows.Count в проверках типа: Код:
Код:
Нет нерешаемых задач - есть недостаток времени и данных!
|
![]() |
![]() |
![]() |
#14 | ||
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]() Цитата:
Цитата:
Код:
Чем шире угол зрения, тем он тупее.
Последний раз редактировалось SAS888; 21.05.2010 в 12:31. |
||
![]() |
![]() |
![]() |
#15 | |
Форумчанин
Регистрация: 24.03.2010
Сообщений: 349
|
![]() Цитата:
Set x = Range([A2], Cells(Rows.Count, 1).End(xlUp).Offset(, 2)) x.Sort Key1:=[B2], Key2:=[C2]: a = x.Value: Здесь, конечно, метод Sort проигнорирует всё лишнее, но не факт (мы не знаем, как он реализован), но потом это всё (2^32 строк) помещается в массив а()....
Нет нерешаемых задач - есть недостаток времени и данных!
|
|
![]() |
![]() |
![]() |
#16 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]()
По-моему, Вы в чем-то заблуждаетесь. Строка кода
Код:
Чем шире угол зрения, тем он тупее.
|
![]() |
![]() |
![]() |
#17 | |
Форумчанин
Регистрация: 24.03.2010
Сообщений: 349
|
![]() Цитата:
Виноват. Каюсь. ![]()
Нет нерешаемых задач - есть недостаток времени и данных!
|
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
выделение на одну ячейку больше! | Окоча Юра | Microsoft Office Excel | 12 | 27.08.2011 16:31 |
размер страницы в одну ячейку | heyjoe | Microsoft Office Excel | 3 | 23.08.2009 19:11 |
Перегнать данные из столбца в одну ячейку | KROZORS | Microsoft Office Access | 2 | 17.06.2009 17:58 |
Вставка в одну ячейку | ivkoa | Microsoft Office Excel | 9 | 22.08.2008 14:16 |
SQL-запрос на выбор повторяющихся строк | stepchild | БД в Delphi | 2 | 07.06.2008 10:52 |