UDF braucht sehr lange für Berechung, warum?
15.07.2015 15:55:52
Peter
Ich setzte die UDF in einer Tabelle ein, nur in einer Spalte von Zeile 4 - 1000. Es braucht x Minuten, bis die Berechnung erfolgt ist. Weshalb? Kann ich den Code optimieren?
Ich greife auf die vorhergehende Zahl in der Spalte. Je nach übergebenem Code kommt die nächste volle Zehnerzahl (Code = 1), die Zahl wird um 1 erhöht (Code = 2)oder es erfolgt keine Ausgabe (alle übrigen numerischen Codes).
Gruss, Peter
Function p_Val(Code As Long, Optional xNull As Long)
'übernimmt Wert aus obiger Zelle und addiert je nach übergebenem Code einen Wert
'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 ThisWorkbook.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 p_Val = 1 Else p_Val = .Cells(zNr, sNr)
Select Case Code
Case 1
p_Val = WorksheetFunction.Round(p_Val / 10, 0) * 10
p_Val = p_Val + 10
Case 2
p_Val = WorksheetFunction.Round(p_Val / 10, 0) * 10
p_Val = p_Val + 1
Case Else
p_Val = ""
End Select