L oop через ячейки в диапазоне, используя ссылки на ячейки для диапазона - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь l oop через ячейки в диапазоне, используя этот кусок кода. Но он выдает ошибку в последнем приведенном здесь утверждении

«Объект не поддерживает это свойство или метод».

Какая альтернатива / решение этому. Спасибо за ваши ответы.

Dim Rng As Range
Set Rng = Range(Cells(1, 1), Cells(1, lastcolTTR))
Rng.Select

For Each ct In TTRfile.Rng.Cells

1 Ответ

1 голос
/ 30 января 2020

Я не знаю, как объявлены TTRfile или ct, но я знаю, Rng - это Range, что означает, что TTRfile.Rng.Cells - это проблема, если нет проблема.

Если ct является вариантом или объектом диапазона, то вы можете использовать For Each, и синтаксически правильный способ создания l oop:

For Each ct In Rng.Cells

Однако, если ct является числовым, как и в случае с ct = Rng.Cells.Count, тогда вы не можете использовать For Each и должны использовать индексную переменную увеличения / уменьшения:

For i = 1 to ct

Кроме того, вы неявно используете ActiveWorksheet Когда вы установите Rng, вы должны привыкнуть к явной квалификации рабочего листа. Если TTRfile является рабочим листом, то

Range(Cells(1, 1), Cells(1, lastcolTTR))

будет выглядеть следующим образом:

TTRfile.Range(TTRfile.Cells(1, 1), TTRfile.Cells(1, lastcolTTR))

Или это:

With TTRfile
    .Range(.Cells(1,1), .Cells(1, lastcolTTR))
End With

Говоря о lastcolTTR, как это объявлено? Это может стать проблемой, если не оценить число. Например, если это вариант, тогда становится возможным держать диапазон, и вы получите ошибку, если этот диапазон содержит более одной ячейки. Кроме того, убедитесь, что вы перехватываете любое условие, из-за которого lastcolTTR будет меньше 1, поскольку Cells(1,0) приведет к ошибке вне диапазона.

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