(no subject)
Jun. 28th, 2011 09:57 am![[identity profile]](https://www.dreamwidth.org/img/silk/identity/openid.png)
![[community profile]](https://www.dreamwidth.org/img/silk/identity/community.png)
Прошу помощи у вселенского разума. Мне нужно было в Excel 2003 в VBA удалить содержимое таблицы за исключением первых двух строк. Следующая строчка помогла:
ThisWorkbook.Sheets(txtSheetName).Range("3:65535").clear
но при этом возник эффект, как будто все строки создались с пустым содержимым, т.е., например, скроллбар уменьшился и скроллит до последней 65535й строки... побочный эффект - размер файла вырос с пары килобайт до пары мегабайт
Как теперь эти строки с помощью того же VBA окончательно убить, чтобы скроллбар скроллил только по присутствующему содежимому и размер файла вернулся в границы допустимого? Уже пробовал:
- .SpecialCells(xlCellTypeBlanks).EntireRow.Delete
- бегать в цикле по Rows и делать .EntireRow.Delete - ужасно медленно
- бегать с бубном и гуглем
Ничего не помогло. Меня можно спасти или сразу в морг?
Upd:
Нашел проблему. Не знаю почему, но я удалял до 65535-й строки, а еще есть 65536-я. Clear со своей работой справляется. Всем спасибо, вопрос снят! Правильное решение:
ThisWorkbook.Sheets(txtSheetName).Range("3:65536").clear
ThisWorkbook.Sheets(txtSheetName).Range("3:65535").clear
но при этом возник эффект, как будто все строки создались с пустым содержимым, т.е., например, скроллбар уменьшился и скроллит до последней 65535й строки... побочный эффект - размер файла вырос с пары килобайт до пары мегабайт
Как теперь эти строки с помощью того же VBA окончательно убить, чтобы скроллбар скроллил только по присутствующему содежимому и размер файла вернулся в границы допустимого? Уже пробовал:
- .SpecialCells(xlCellTypeBlanks).EntireRow.Delete
- бегать в цикле по Rows и делать .EntireRow.Delete - ужасно медленно
- бегать с бубном и гуглем
Ничего не помогло. Меня можно спасти или сразу в морг?
Upd:
Нашел проблему. Не знаю почему, но я удалял до 65535-й строки, а еще есть 65536-я. Clear со своей работой справляется. Всем спасибо, вопрос снят! Правильное решение:
ThisWorkbook.Sheets(txtSheetName).Range("3:65536").clear
no subject
Date: 2011-06-28 08:39 am (UTC)no subject
Date: 2011-06-28 08:40 am (UTC)no subject
Date: 2011-06-28 08:41 am (UTC)no subject
Date: 2011-06-28 08:41 am (UTC)no subject
Date: 2011-06-28 08:47 am (UTC)