Я новичок в Excel VBA, и в настоящее время я работаю с проектом, которому необходимо автоматически заполнять порядковые номера в столбце A в зависимости от заполненного диапазона в столбце B.

С кодом ниже, который я нашел на форуме ozgrid.com, он автоматически заполняет столбец A от 1 до последней использованной строки в соседней ячейке, которая находится в столбце B. Но в моем случае у меня есть пользовательская форма, и у нее есть команда При нажатии этой кнопки он должен просто продолжать генерировать уникальный ссылочный идентификатор в столбце A от максимального числа в последней заполненной ячейке в столбце A до последней заполненной ячейки в соседней ячейке, которая является столбцом B.

И проблема с кодом ниже состоит в том, что при первом нажатии кнопки команды она генерирует порядковые номера от 1 до последней использованной строки в столбце B, но когда кнопка команды нажимается снова, столбец A автоматически заполняется с 1 снова использовать последний использованный ряд вместо продолжения максимального числа, существующего в столбце А.

Например, максимальное число при первом нажатии в командной кнопке равно 82.  При следующем нажатии на командную кнопку ячейка под последней использованной строкой должна быть от 83 до последней использованной строки в столбце B.

Кроме того, я предоставил изображение моего графического интерфейса ниже для вашего удобства.

Sub SequenceLoop()
    Dim k, i As Long, n As Long
    Dim LR1 As Long
    Dim ws As Worksheet

Set ws = ThisWorkbook.Sheets("Sheet1")

LR1 = ws.Range("B" & ws.Rows.Count).End(xlUp).Row


With Range("A2:A" & LR1)
    k = .Value
    For i = 1 To UBound(k, 1)
        If Len(k(i, 1)) = 0 Then
            n = n + 1
            k(i, 1) = n
        End If
    Next
    .Value = k
End With 
End Sub

Графический интерфейс для автозаполнения данных в столбце B. При нажатии кнопки «Создать шаблон» выполняется автоматическое заполнение определенных данных в столбце B:

Графический интерфейс для автозаполнения порядковых номеров в столбце A:

       

1 ответ1

0

Решение кажется немного неуклюжим, но, не зная всего о том, что вы пытаетесь сделать, я не буду предлагать обширные изменения.

Решение довольно простое, вам просто нужно инициализировать n последним значением в списке перед циклом for . Как это написано сейчас, n обнуляется каждый раз, когда вы запускаете макрос.

Что-то вроде следующего сделает свое дело.

n = Cells(Rows.Count, 1).End(xlUp).Value

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