Вы можете использовать свойство ws.UsedRange
для получения последней строки и столбца.Если вы пытаетесь просмотреть различные рабочие листы , то приведенный ниже код должен работать.
Sub loop_through_all()
Dim ws As Worksheet
Dim r As Integer, c As Integer
For Each ws In ActiveWorkbook.Sheets
For r = 1 To ws.UsedRange.Rows.Count
For c = 1 To ws.UsedRange.Columns.Count
' Your code goes here
Next
Next
Next
End Sub
Если вы пытаетесь просмотреть страниц , как вы видите их на рабочем листе, то поймите, что это один гигантский лист.Если у вас есть данные, показанные в «таблицах» по всему листу, и вы хотите проанализировать их по отдельности, тогда потребуется немного больше работы, и вам следует использовать метод .End()
.
Cells(Rows.Count, 1).End(xlUp).Row
Cells(1, Columns.Count).End(xlToLeft).Column