Напишите код, который читается так, как вы бы это объяснили:
[...] проходя через все ячейки от N19 до C14
Вы хотите, чтобы столбцы переходили от N (14) к C (3), а для каждого столбца - от 19 до 14. Поскольку оба цикла повторяются в обратном направлении, часть, которую вы пропустили в синтаксисе цикла For
(FWIW они все ключевые слова , а не функции ), это необязательный спецификатор Step
, который вы хотите указать как -1
.
Dim currentColumn As Long
For currentColumn = 14 To 3 Step -1
Dim currentRow As Long
For currentRow = 19 To 14 Step -1
Dim currentCell As Range
Set currentCell = Sheet1.Cells(currentRow, currentColumn)
'interact with the currentCell here
Next
Next
Обратите внимание, что на первый взгляд и не зная, чего вы пытаетесь достичь, на самом деле нет никаких причин возвращаться назад: вы можете перейти на currentColumn = 3 To 14
и currentRow = 14 To 19
, и точно такие же ячейки будут повторяться сверху-вниз.снизу, слева направо.За кодом легче следовать, когда все происходит естественным образом: в общем, лучше избегать циклического возврата назад, если только не нужно .
Также обратите внимание, что вызов члена Cells
явно квалифицирован как Worksheet
объект (здесь Sheet1
- ваш пробег может отличаться);если вы действительно хотите работать с независимо от того, какой лист в данный момент активен , тогда вы можете использовать ActiveSheet
в качестве классификатора и выполнить ActiveSheet.Cells(currentRow, currentColumn)
.