Ich weiß ja nicht, ob du Onurs Vorschlag ...
15.07.2018 02:13:46
Luc:-?
…wirklich adäquat umgesetzt hast, paraxylol,
das Public i As Long (besser als Integer!) am ModulAnfang (außerhalb der Prozedur!) ist wichtig, oder was du sonst noch zwischendurch machst bzw wie du das generell nutzen willst, denn solche Konstrukte, ob nun wie von Onur gezeigt mit GlobalVariable oder mit Static i As Long innerhalb der Prozedur deklariert, haben einen Schwachpkt → sie können uU auf 0 zurückfallen und tuen das auch regelmäßig, wenn die Datei geschlossen wird.
Soll stets der letzte Stand dieses Zählers bewahrt wdn, kommst du um eine benannte Xl-Konstante nicht herum. Deren aktuellen Stand könntest du auch im Blatt ausgeben. Mit der nachfolgd Prozedur wird das realisiert. Ist dieser Name nicht vorhanden, wird er, nur für das aktuelle Blatt gültig (!), erst angelegt. Anderenfalls wird sein Wert ausgelesen, in beiden Fällen um 1 erhöht, so zurückgespeichert und weiterverwendet:
Sub NeueSaeule()
Const zlDiff As Long = 9, adKopBer$ = "L7:T14", naCtr$ = "BlockZähler"
Dim z As Long
On Error Resume Next
With ActiveSheet
If IsError(.Names(naCtr).Name) Then _
.Names.Add naCtr, "=0"
z = CLng(Mid(.Names(naCtr).RefersTo, 2)) + 1
.Names(naCtr).RefersTo = z
With .Range(adKopBer)
.Copy .Offset(z * zlDiff, 0)
End With
End With
End Sub
Alle (anderen), ggf zu aktualisierenden Werte wurden hier pflegeleicht am PgmAnfang als Konstanten deklariert, auch der Name der benannten Xl-Konstanten, der so ebenfalls leicht geändert wdn kann, ohne in den weiteren PgmCode eingreifen zu müssen. Außerdem habe ich die unnötige Selektiererei entfernt.
Soll irgendwann wieder von vorn begonnen wdn, muss nur die Xl-Konstante zurück auf 0 gesetzt wdn. Dass die Datei dann auch gespeichert wdn muss, um den aktuellen Zählerstand zu behalten, versteht sich wohl von selbst. Sollen also alle Aktionen (inkl ZählerErhöhung) einer Xl-Sitzung verworfen wdn, muss die Datei nur ohne Speicherung geschlossen wdn.
Morrn, Luc :-?