私は 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