Выбор диапазона с помощью переменной - PullRequest
0 голосов
/ 24 октября 2018

Следующий код дает мне «Ошибка приложения или объекта»

Sub Apply_Changes()
    Dim col_ref As Integer
    col_ref = 5
    Worksheets("Sheet1").range(Cells(10, col_ref),cells(20,col_ref)).Select
End Sub

Может кто-нибудь объяснить?

Есть ли другой способ определения диапазона?

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Вам необходимо применить парантаж к ячейкам () внутри диапазона .:

Worksheets("Sheet1").range(Worksheets("Sheet1").Cells(10, col_ref),Worksheets("Sheet1").cells(20,col_ref)).Select

или использовать с, чтобы сократить:

With Worksheets("Sheet1")
    .range(.Cells(10, col_ref),.cells(20,col_ref)).Select
End with

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

With Worksheets("Sheet1")
    .range(.Cells(10, col_ref),.cells(20,col_ref)).copy Worksheets("Sheet2").Range("A1")
End with

Если вы действительно хотите выбрать диапазон, тогда лист должен быть активным:

With Worksheets("Sheet1")
    .Activate
    .range(.Cells(10, col_ref),.cells(20,col_ref)).Select
End with
0 голосов
/ 24 октября 2018

Вы должны квалифицировать свой Cells(), в противном случае вы говорите: «Ячейки на любом рабочем листе, который в данный момент активен», что не имеет смысла внутри Worksheeets("Sheet1").Range()

Worksheets("Sheet1").range(Worksheets("Sheet1").Cells(10, col_ref),Worksheets("Sheet1").cells(20,col_ref)).Select

. Вместо этого подумайтекак:

Worksheets("Sheet1").Cells(10, col_ref).Resize(10).Select

Существенно изменив размер одной ячейки еще на 10 строк (до 20).

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