
У меня есть диапазон, который мне нужно выбрать. Верхние области диапазона — это A2, которые я могу получить с помощью следующей команды —
Cells(2, 1)
Нижний диапазон я могу получить, используя следующие команды:
Cells(Rows.Count, 1).End(xlUp).Row
Cells(5, Columns.Count).End(xlToLeft).Column
Как мне объединить все мои команды ячеек в нечто, что будет выбирать диапазон?
Я пытался
range=(cells(2,1)),(Cells(Rows.Count, 1).End(xlUp).Row),(Cells(5, Columns.Count).End(xlToLeft).Column).select
но я получаю ошибку формата.
решение1
Запомнить Cells(Rows.Count, 1).End(xlUp).Row
возвращает целое число
и
Cells(5, Columns.Count).End(xlToLeft).Column
возвращает целое число.
Итак, вам нужно Cells(integer,integer)
.
В вашем нынешнем виде он выглядит так range(A2),integer,integer.select
.
Вы не используете select
, и если вы собираетесь использовать два целых числа, вам нужно обернуть их в cells(). И все это в range().
Set rng = Range(Cells(2, 1), Cells((Cells(Rows.Count, 1).End(xlUp).Row), (Cells(5, Columns.Count).End(xlToLeft).Column)))
Лучшим способом сделать это было бы
Sub test()
Dim rng As Range
Dim lastrow As Integer
lastrow = Cells(Rows.Count, 1).End(xlUp).Row
Dim lastcol As Integer
lastcol = Cells(5, Columns.Count).End(xlToLeft).Column
Set rng = Range(Cells(2, 1), Cells(lastrow, lastcol))
End Sub
Теперь у вас нет причин для select
вашего диапазона — просто работайте rng
напрямую.