Как наиболее эффективно использовать диапазон? - PullRequest
0 голосов
/ 27 февраля 2020

Я не знаю, есть ли уже ответ на этот вопрос, просто я не знаю, полностью ли оптимизирован мой код (что я думаю, нет).

Поскольку я полностью посвящен автоматизации рабочие книги и процессы в моей компании, пользователи запускают только макросы и им не нужно знать, что происходит, и не видеть сообщений об ошибках, поэтому я всегда называю все диапазоны:

Workbooks("Book1.xlsx").Sheets("Sheet1").Range("A1:A" & last)

Где Workbooks, Sheets и Range могут быть определенным значением или переменной. Last - это переменная для последней строки, используемой на рабочем листе.

Есть ли другой способ, которым я могу назвать диапазоны более коротким способом, или любой другой метод, который вы знаете, чтобы сделать это? Идея в том, что макрос никогда не будет ссылаться на какую-либо другую книгу или лист вообще.

Заранее спасибо.

1 Ответ

0 голосов
/ 28 февраля 2020

вот несколько способов получить последний ряд

    Using Find Function 
  LastRow = sht.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row

'Using SpecialCells Function
  LastRow = sht.Cells.SpecialCells(xlCellTypeLastCell).Row

'Ctrl + Shift + End
  LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row

'Using UsedRange
  sht.UsedRange 'Refresh UsedRange
  LastRow = sht.UsedRange.Rows(sht.UsedRange.Rows.Count).Row

'Using Table Range
  LastRow = sht.ListObjects("Table1").Range.Rows.Count

'Using Named Range
  LastRow = sht.Range("MyNamedRange").Rows.Count

'Ctrl + Shift + Down (Range should be first cell in data set)
  LastRow = sht.Range("A1").CurrentRegion.Rows.Count

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