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

0

Eu 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 eu tenho um userform e ele tem um botão de comando que, quando clicado, deve continuar gerando ID de Referência exclusivo na Coluna A 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. / p>

E o problema com o 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 é preenche automaticamente de 1 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 do 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:

AGUIparaopreenchimentoautomáticodenúmerosdesequêncianaColunaA:

    
por John Sherwin Rulete 23.06.2016 / 14:31

1 resposta

0

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

A solução é bastante simples, você só precisa inicializar n para o último valor na lista antes do loop para . Da maneira como está escrito agora, n é redefinido para zero toda vez que você executa a macro.

Algo como o seguinte faria o truque.

n = Cells(Rows.Count, 1).End(xlUp).Value
    
por 24.06.2016 / 01:48