Почему я получаю объектную ошибку при настройке строк, которые я хочу очистить? - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть специальный шаблон, который запускает данные его печатного массива в ячейке B9, но я просто хочу, чтобы строки 9-rows.count были очищены от его содержимого (не удалены, потому что там есть выпадающие меню).

Rows(8).Offset(1, 0).Resize(Rows.Count - 1).EntireRow.ClearContents

, похоже, не работает, но оно работало, когда у меня было Rows(1).Offset(1,0) и т. Д ... там.почему он теперь не хочет работать, когда я настроил номер строки для запуска?

1 Ответ

0 голосов
/ 26 февраля 2019

Rows.Count дает максимальное количество строк в листе (обычно 1'048'576).

Разделение вашей команды Rows(8).Offset(1, 0).Resize(Rows.Count - 1):

Rows(8) дает вам строку 8 ($8:$8)

.Offset(1, 0) дает вам следующую строку ($9:$9)

.Resize(Rows.Count - 1) просит изменить размер диапазона, который начинается в строке 9, чтобы он стал «высоким» для 1'048'576 строк.Однако это будет означать строку 9 до строки 1'048'585 , и это будет позади максимального количества строк.

Что вы, вероятно, имели в виду, это удалить до конца вашегоданные.Это не простая задача, чтобы выяснить конец данных, обычно это делается с помощью конструкции, подобной rowCount = Cells(Rows.Count, 2).End(xlUp).Row.Это (виртуально) перейдет к ячейке B1048576, имитирует клавишу "Ctrl + Up" и (снова виртуально) перейдет к последней строке, содержащей данные в этом столбце.Измените 2 на любой другой номер столбца (A будет 1 ...), если вы хотите проверить этот столбец.

Попробуйте следующий код:

Dim rowCount As Long
With ActiveSheet
    rowCount = .Cells(.Rows.Count, 2).End(xlUp).Row
    .Rows(8).Offset(1, 0).Resize(rowCount - 1).EntireRow.ClearContents
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...