Я новичок в Excel VBA и в настоящее время работаю над проектом, в котором необходимо автоматически заполнять порядковые номера в столбце A в зависимости от заполненного диапазона в столбце B.
С помощью кода ниже, который я нашел на форуме ozgrid.com, он автоматически заполняет столбец A от 1 до последней использованной строки в соседней ячейке, которая находится в столбце B. Но в моем случае у меня есть пользовательская форма и в ней есть кнопка, при нажатии на которую она должна просто продолжить генерировать уникальный идентификатор ссылки в столбце A от максимального числа в последней заполненной ячейке в столбце A до последней заполненной ячейки в соседней ячейке, которая находится в столбце B.
Проблема с приведенным ниже кодом заключается в том, что при первом нажатии кнопки команды генерируются порядковые номера от 1 до последней использованной строки в столбце B, но при повторном нажатии кнопки команды столбец A автоматически заполняется от 1 до последней использованной строки вместо того, чтобы продолжить максимальное число, существующее в столбце A.
Например, максимальное число при первом нажатии на кнопку команды — 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
Решение кажется немного неуклюжим, но, не зная всего, что вы пытаетесь сделать, я не буду предлагать существенных изменений.
Решение довольно простое, вам просто нужно инициализироватьнк последнему значению в списке переддляloop. Как это сейчас написано,нсбрасывается на ноль каждый раз при запуске макроса.
Подойдет что-то вроде следующего.
n = Cells(Rows.Count, 1).End(xlUp).Value