versuche mit VBA was zu basteln und komme aus dem Lachen nicht mehr raus.
Folgendes möchte ich gerne haben:
In einer Adressliste vergebe ich eine lfdNr. Diese soll nicht doppelt vorkommen was ich bisher mit Datenüberprüfung und =Zählenwenn($B:$B;B1)=1 abfange. Nun besteht aber die Möglichkeit, dass ein DS wieder gelöscht wird, damit dann auch die entsprechende lfdNr., welche ich dann wieder neu vergeben könnte (da ja nicht mehr doppelt). Dies möchte ich aber ausschließen, d.h. eine einmal vergebene lfdNr soll nicht ein weiteres Mal vergeben werden können.
Hierzu habe ich mir gedacht, über die lfdNr das Maximum zu ermitteln, und jeder neue DS muss eine lfdNr > Max(lfdNr) haben. Da die Funktion Max() sich natürlich anpasst, müsste das Max() als Wert zur Verfügung stehen. Bsp: Wenn ich die DS 20-25 lösche (lfdNr. 20-25), soll der nächste neue DS die lfdNr. 26 erhalten! Bei der Funktion Max() wäre das Max bei 19, aber 25 soll es sein (welche dann noch irgendwie gespeichert werden muss).
Warum lache ich nun? Tja, ich habe versucht mir das, zumindest das Kopieren des Wertes, in VBA selbst zu basteln, aber mit nachfolgendem Ansatz wird in jeder aktiven Zelle immer eine 0 gesetzt, mein Max() bleibt immer 0 und ... naja seht selbst. Hier der Code (Ihr dürft auch lachen):
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Range("D1").Select
ActiveCell.FormulaR1C1 = "=MAX(R[1]C:R[1048575]C)"
Range("D1").Copy
Range("E1").PasteSpecial xlPasteValues
Application.CutCopyMode = False
'Range("C2").Select
End Sub
Leider sind meine Kenntnisse noch nicht so weit, um a) meinen Code so zu verstehen, wie dieser gerade funktioniert, und b) um meinen Wunsch zu erstellen.
Folgende Randbedingung: Die Spalte B enthält im Original die lfdNr, Einträge ab Zeile 3; den Max-Wert hätte ich gern in Zelle B1.
Könnte mir jemand helfen? Vielleicht hat ja jemand eine andere, elegantere Lösung.
Gruß
Tobias