Обратный L oop - обратный отсчет клеток до 1 - PullRequest
1 голос
/ 30 апреля 2020

Я никогда не делал al oop в VBA прежде, и я застрял. Я нашел множество примеров в Интернете и здесь, и не могу настроить их так, чтобы они делали то, что я хочу. Поэтому я был бы признателен за вашу помощь!

По сути, я создаю таблицу редакций документа, текущая редакция поступает с другого листа и вводится в ячейку, l oop Я хочу взять эту ячейку - 1 в следующей ячейке вниз, пока не дойдет до 1. Например, если .range("A1") = 5, то A2 = 4, A3 = 3, A4 = 2 и A5 = 1. Это моя попытка.

Sub RevisionLoop()
Dim Rev As String
Dim i As Integer
i = 0

Rev = ThisWorkbook.Worksheets(1).Range("A1")
Do While Rev > 0
Range("A1").Offset(i, 0) = Rev
i = i - 1
Rev = Rev - 1
Loop
End Sub

Минимальное количество будет 1. Можете ли вы сообщить, где я ошибся, пожалуйста? Также я не уверен, должен ли мой первый Dim быть String, так как я еще не до конца понимаю это. : -S Спасибо!

1 Ответ

2 голосов
/ 30 апреля 2020

Первое, что нужно сделать, это найти последнюю строку на вашем листе. Тогда вместо Do Пока l oop используйте вместо него al oop. Ваш l oop должен включать «Шаг -1», чтобы работать с последнего до первого (в обратном порядке).

Sub FindLastRowInOneColumn_then_LoopInReverse()
    'Find the last used row in a Column: column A in this example
    Dim LastRow As Long

    With ActiveSheet
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    End With

    'Loop Through All Rows in Reverse Order
        For x = LastRow To 0 Step -1
            'Change The Value In Column A to x
            ActiveSheet.Cells(x, 1).Value = x
        Next x
End Sub

Ссылка 1: https://www.rondebruin.nl/win/s9/win005.htm Ссылка 2: https://www.thespreadsheetguru.com/the-code-vault/a-vba-for-loop-in-reverse-order

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