У меня есть диапазон, который мне нужно выбрать. Верхние области диапазона - 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 ответ1

2

Помните Cells(Rows.Count, 1).End(xlUp).Row возвращает целое число

а также

Cells(5, Columns.Count).End(xlToLeft).Column возвращает целое число.

Итак, вам нужны Cells(integer,integer) .

Теперь, когда вы стоите, он читает range(A2),integer,integer.select .

Вы не используете select и если вы собираетесь использовать два целых числа, вам нужно заключить его в ячейки (). И все это в диапазоне ().

 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 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .