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