Excel VBA: loop para preencher números de sequência em uma coluna

Excel VBA: loop para preencher números de sequência em uma coluna

Sou novo no Excel VBA e atualmente estou trabalhando com um projeto que precisa preencher automaticamente os números de sequência na Coluna A, dependendo do intervalo preenchido na Coluna B.

Com o código abaixo que encontrei no fórum ozgrid.com, ele preenche automaticamente a coluna A de 1 até a última linha usada na célula adjacente que está na coluna B. Mas no meu caso é que tenho um formulário de usuário e ele tem um comando botão que, quando clicado, deve continuar a gerar um ID de referência exclusivo na coluna A, a partir do número máximo na última célula preenchida na coluna A até a última célula preenchida na célula adjacente, que é a coluna B.

E o problema do código abaixo é que na primeira vez que o botão de comando é clicado, ele gera números de sequência de 1 até a última linha usada na Coluna B, mas quando o botão de comando é clicado novamente, a Coluna A é preenchida automaticamente de 1 para a última linha usada novamente em vez de continuar o número máximo existente na Coluna A.

Por exemplo, o número máximo no primeiro clique no botão de comando é 82. No próximo clique no botão de comando, a célula abaixo da última linha usada deve ser 83 até a última linha usada na Coluna B novamente.

Além disso, forneci uma imagem da minha GUI abaixo para sua melhor referência.

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

GUI para preenchimento automático de dados na coluna B. Quando o botão Criar modelo é clicado, ele preenche automaticamente os dados específicos na coluna B:

A GUI para preenchimento automático de números de sequência na Coluna A:

       

Responder1

A solução parece um pouco desajeitada, mas sem saber tudo sobre o que você está tentando fazer não sugerirei mudanças extensas.

A solução é bem simples, você só precisa inicializarnpara o último valor da lista antes doparalaço. Do jeito que está escrito agora,né zerado toda vez que você executa a macro.

Algo como o seguinte resolveria o problema.

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

informação relacionada