Hatte als erste Maßnahme 4 Konstanten angelegt, weil diese immer fest sind.
Kann man an der Performance evtl noch schrauben?
Aufrufe der Funktionen in der gesamten Arbeitsmappe:
VS() ca.3000x
GB() ca.12000x
Beschreibung:
VS() = ruft einen vergebenen Range Namen aus einer Schlüsseltabelle auf.
Welcher RangeName ergibt sich aus
>Zelle(aktuelle Zeile, Spaltennr aus Konstante SpalteVTS)
und
>Zelle(Zeilennr aus Konstante ZeileGSB, aktuelle Spalte)
das ganze dann multipliziert mit den Wert aus
>Zelle(aktuelle Zeile, Spaltennr aus Konstante SpalteSBU)
GB() = führt eine IF Bedingung aus und übernimmt bei True einen Wert Links weiter links von der Zelle
>Bedingung:
WENN Zelle(aktuelle Zeile, Spalte aus Konstante SpalteGB) =
Zelle(Zeile aus Konstante ZeileGSB, aktuelle Spalte)
DANN
WERT aus Zelle(aktuelle Zeile, Spalte aus Konstante SpalteSBU) übernehmen
Public Const SpalteVTS As Integer = 6
Public Const ZeileGSB As Integer = 7
Public Const SpalteSBU As Integer = 5
Public Const SpalteGB As Integer = 4
Function VS()
Application.Volatile
VS = Range("VS_" & Application.ThisCell.Parent.Cells _
(Application.Caller.Row, SpalteVTS) & _
Application.ThisCell.Parent.Cells(ZeileGSB, Application.Caller.Column)).Value * _
Application.ThisCell.Parent.Cells(Application.Caller.Row, SpalteSBU)
End Function
Function GB()
Application.Volatile
If Application.ThisCell.Parent.Cells _
(Application.Caller.Row, SpalteGB) = _
Application.ThisCell.Parent.Cells(ZeileGSB, Application.Caller.Column) Then
GB = Application.ThisCell.Parent.Cells(Application.Caller.Row, SpalteSBU)
End If
End Function