Excel VBA:循环填充列中的序列号

Excel VBA:循环填充列中的序列号

我是 Excel VBA 的新手,目前正在进行一个项目,需要根据 B 列中填充的范围自动填充 A 列中的序列号。

使用我在 ozgrid.com 论坛中找到的以下代码,它会自动填充 A 列从 1 到相邻单元格(即 B 列)中最后使用的行。但就我而言,我有一个用户窗体,它有一个命令按钮,单击该按钮时,它应该继续在 A 列中生成唯一的参考 ID,从 A 列中最后填充的单元格的最大数字到相邻单元格(即 B 列)中最后填充的单元格。

下面的代码存在一个问题,就是第一次点击命令按钮时,它会生成从 1 到 B 列中最后使用的行之间的序列号,但是再次点击命令按钮时,A 列会再次自动从 1 填充到最后使用的行,而不是继续使用 A 列中存在的最大数字。

例如,第一次单击命令按钮时的最大数字是 82。下次单击命令按钮时,最后使用的行下方的单元格应该是 83,直到再次到达 B 列中最后使用的行。

此外,我在下面提供了我的 GUI 图片,以供您更好地参考。

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 列数据的 GUI。单击“创建模板”按钮时,它会自动填充 B 列中的特定数据:

用于自动填充 A 列序列号的 GUI:

       

答案1

该解决方案看起来有点笨重,但如果不了解您要执行的操作,我不会建议进行广泛的更改。

解决方案很简单,你只需要初始化n到列表中的最后一个值之前为了循环。现在的写法是,n每次运行宏时都会重置为零。

类似下面的方法可以达到这个效果。

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

相关内容