Excel VBA: Schleife zum Einfügen von Sequenznummern in eine Spalte

Excel VBA: Schleife zum Einfügen von Sequenznummern in eine Spalte

Ich bin neu bei Excel VBA und arbeite derzeit an einem Projekt, bei dem Sequenznummern in Spalte A abhängig vom ausgefüllten Bereich in Spalte B automatisch ausgefüllt werden müssen.

Mit dem unten stehenden Code, den ich im Forum ozgrid.com gefunden habe, wird Spalte A automatisch von 1 bis zur letzten verwendeten Zeile in der angrenzenden Zelle, die in Spalte B ist, ausgefüllt. In meinem Fall ist es jedoch so, dass ich ein Benutzerformular habe und es eine Befehlsschaltfläche hat, die, wenn sie angeklickt wird, einfach weiterhin eine eindeutige Referenz-ID in Spalte A generieren soll, ab der maximalen Zahl in der letzten ausgefüllten Zelle in Spalte A bis zur letzten ausgefüllten Zelle in der angrenzenden Zelle, die Spalte B ist.

Und das Problem mit dem unten stehenden Code besteht darin, dass beim ersten Klicken auf die Befehlsschaltfläche Sequenznummern von 1 bis zur letzten verwendeten Zeile in Spalte B generiert werden. Beim erneuten Klicken auf die Befehlsschaltfläche wird Spalte A jedoch erneut von 1 bis zur letzten verwendeten Zeile automatisch ausgefüllt, anstatt die in Spalte A vorhandene Maximalzahl fortzusetzen.

Beispielsweise ist die maximale Zahl beim ersten Klick auf die Befehlsschaltfläche 82. Beim nächsten Klick auf die Befehlsschaltfläche sollte die Zelle unter der zuletzt verwendeten Zeile bis hin zur zuletzt verwendeten Zeile in Spalte B wieder 83 sein.

Außerdem habe ich unten zur besseren Orientierung ein Bild meiner GUI bereitgestellt.

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 zum automatischen Ausfüllen von Daten in Spalte B. Wenn Sie auf die Schaltfläche „Vorlage erstellen“ klicken, werden die spezifischen Daten in Spalte B automatisch ausgefüllt:

Die GUI zum automatischen Ausfüllen von Sequenznummern in Spalte A:

       

Antwort1

Die Lösung erscheint etwas klobig, aber ohne genaues Wissen darüber, was Sie versuchen, werde ich keine umfangreichen Änderungen vorschlagen.

Die Lösung ist ganz einfach, Sie müssen nur initialisierenNzum letzten Wert in der Liste vor demfürSchleife. So wie es jetzt geschrieben ist,Nwird bei jedem Ausführen des Makros auf Null zurückgesetzt.

Etwas wie das Folgende würde den Zweck erfüllen.

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

verwandte Informationen