Подсчитайте количество строк на другом листе

Я просмотрел предложенные вопросы, чтобы найти ответ на мою проблему. Ближайший вопрос называется: подсчитать количество строк в другом листе Excel Подсчитайте количество строк на другом листе Excel

Решение этой проблемы мне не подходит.

Я пытаюсь подсчитать количество строк в диапазоне на листе, отличном от активного. Вот мой код:

Sub verbflashcards()

Dim wordcount As Long

With Worksheets("Verbs")
wordcount = .Range(Cells(4, 1), Cells(4, 1).End(xlDown)).Rows.Count
End With

MsgBox (wordcount)
End Sub

У меня есть рабочий лист под названием Verbs, и это второй рабочий лист в книге. Я пытался:

With Verbs
With Sheet2
With Sheets("Verbs")
With Sheets("Sheet2") 

Кажется, что ни один из них не работает.


person user2859603    schedule 04.01.2015    source источник


Ответы (2)


Проверьте это и надейтесь, что это вам поможет:

Sub verbflashcards()

Dim wordcount As Long

wordcount = ActiveWorkbook.Worksheets("Verbs").Range("A4", Worksheets("Verbs").Range("A4").End(xlDown)).Rows.Count

MsgBox (wordcount)

End Sub

Где D1 - столбец, из которого вы можете получить количество строк.

Метод 2:

Sub verbflashcards()

Dim wordcount As Long
With Sheets("Verbs")
    wordcount = .Range("A" & .Rows.Count).End(xlUp).Row
End With

MsgBox (wordcount)
End Sub

Примечание: Есть много ответов на ваши вопросы. Проверьте эту ссылку SO: Как с помощью макроса найти последнюю строку, содержащую данные, в таблице Excel?

person Paresh J    schedule 04.01.2015
comment
Оно работает! Значит, на листы нужно ссылаться второй раз внутри диапазона? - person user2859603; 04.01.2015
comment
Есть несколько способов добиться того же, вы можете выбрать любой. Проверьте мой отредактированный ответ. - person Paresh J; 04.01.2015
comment
Я думаю, что .Range("D1"... должен был быть .Range("A4".... Кажется, вы переставили r и c из Cells(4, 1). - person ; 04.01.2015
comment
Это не обязательно количество используемых строк - это последняя строка с данными в столбце A (A1 может быть пустым и т. Д.). - person brettdj; 04.01.2015

Ваш оригинал не работал, потому что не указан родительский элемент для Cells(4, 1) и Cells(4, 1).End(xlDown). Если вы находитесь внутри блока With ... End With, ставьте перед любым адресом ячейки точку (также известную как точка). Пример:

With Worksheets("Verbs")
  wordcount = .Range(.Cells(4, 1), .Cells(4, 1).End(xlDown)).Rows.Count
End With

Обратите внимание на .Cells(4, 1), а не на Cells(4, 1). Точка указывает, что ячейки, на которые вы ссылаетесь, находятся в рабочих таблицах («глаголах»).

person Community    schedule 04.01.2015
comment
ДА, Вы совершенно правы !!! Вы должны быть осторожны при использовании блока WITH. - person Paresh J; 04.01.2015