Excel VBA: 列に連続番号を入力するループ

Excel VBA: 列に連続番号を入力するループ

私は Excel VBA の初心者で、現在、列 B に入力された範囲に応じて列 A にシーケンス番号を自動入力する必要があるプロジェクトに取り組んでいます。

ozgrid.com フォーラムで見つけた以下のコードを使用すると、列 A が 1 から、列 B にある隣接セルの最後の使用行まで自動入力されます。ただし、私の場合は、ユーザー フォームがあり、コマンド ボタンをクリックすると、列 A の最後の入力セルの最大番号から、列 B である隣接セルの最後の入力セルまで、列 A に一意の参照 ID を生成し続ける必要があります。

また、以下のコードの問題は、コマンド ボタンが初めてクリックされたときに、列 B に 1 から最後に使用された行までのシーケンス番号が生成されるが、コマンド ボタンが再度クリックされると、列 A に存在する最大番号を続行するのではなく、列 A が 1 から最後に使用された行まで再度自動入力されることです。

たとえば、コマンド ボタンを最初にクリックしたときの最大数は 82 です。コマンド ボタンを次にクリックしたとき、最後に使用した行の下のセルは、列 B の最後に使用した行まで再び 83 になります。

また、参考として、以下に 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 = Cells(Rows.Count, 1).End(xlUp).Value

関連情報