Ich habe mit pnr() eine UDF, mit der ich innerhalb einer Spalte eine Laufnummer einsetzen kann. Dabei spielt es keine Rolle, ob zwischen den einzelnen Einträge ein oder mehrere Leerzellen enthalten sind.
Damit ich Excel zwingen kann, diese Funktion immer aktuell zu berechnen, trage ich die Funktion immer eingebettet in eine Abfrage ein, wobei die wenn Bedingung immer falsch ist.
Solange ich innerhalb einer Datei arbeite, klappt alles. Wenn die Datei offen bleibt und ich in einer anderen Datei arbeite, steht bei erneutem Anwählen der Datei, in welcher die Formel (vgl. nachstehend) enthalten ist, in allen Zellen mit dieser UDF "#WERT".
Wie muss ich den Code erweitern, dass dies nicht passiert?
Gruss, Peter
Formel
=WENN(HEUTE()=0;"";pnr())
Option Explicit
Function pNR(Optional xNull As Long)
'ohne optinales Argument 1 werden ausgeblendete Zellen ignoriert
Dim zNr As Long, sNr As Long, strTab As String
strTab = Application.Caller.Parent.Name
zNr = Application.Caller.Row
sNr = Application.Caller.Column
With Sheets(strTab)
Do
zNr = zNr - 1
If zNr = 0 Then Exit Do
If .Rows(zNr).Hidden = False Or xNull = 1 Then
If WorksheetFunction.IsNumber(.Cells(zNr, sNr)) Then Exit Do
End If
Loop
If zNr = 0 Then pNR = 1 Else pNR = .Cells(zNr, sNr) + 1
End With
End Function