Общее количество строк - PullRequest
0 голосов
/ 13 ноября 2011

Как определить общее количество использованных строк в моей рабочей таблице?

Dim rows As Integer
rows = ActiveWorkbook.Sheets(1).Range("A65536").End(xlUp).Offset(1, 0).Rows.Count

Мне нужно знать, чтобы я мог просмотреть все свои строки:

For row = 1 To rows
    ' Check if row contains pattern.
    match = ReFind(Range(row & ":" & row), "^.*(\[KA\])|(\[KIC\])|(\[KS\])|(\[NA\]).*$")

    If match <> "" Then
        Call CopyRow(row)
    End If
Next row

1 Ответ

3 голосов
/ 13 ноября 2011

Использование .Cells(.Rows.Count, "A").End(xlUp).Row вернет последнюю использованную строку в определенном столбце , необязательно последнюю строку с какой-либо использованной ячейкой.


Другой способ - использовать Sheet.UsedRange, однако вы должны знать о некоторых ограничениях.

.UsedRange возвращает прямоугольную область, ограничивающую все используемые ячейки, поэтому она не может быть привязана к ячейке A1. Чтобы получить номер строки нижней части диапазона, используйте

.UsedRange.Row + .UsedRange.Rows.Count - 1

При удалении строк (или столбцов) .UsedRange может не обновляться, поэтому вы можете получить диапазон больше, чем истинно используемый диапазон.

Вы можете принудительно обновить: если вы счастливы использовать ActiveSheet, тогда поставьте строку

Application.ActiveSheet.UsedRange

в вашем коде вызывает обновление.


Если вы не хотите использовать ActiveSheet (например, в подпрограмме, передавшей лист в качестве параметра), тогда используйте:

i = Sh.UsedRange.Row

Не полагайтесь на значение i на данный момент. Следующая ссылка на .UsedRange будет истинным используемым диапазоном.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...