AW: Wie lautet die Funktion?
29.03.2016 16:40:43
Ali
Ich habe soweit alles eingefügt. Nun lautet meine Funktion wie folgt:
Option Explicit
Public Function Schicht1(s1 As Double, tw As Variant, b1 As Double, ru As Double, t1 As _
Double, t2 As Double, t3 As Double, t4 As Double, vb1 As Double, vb2 As Double, vb3 As Double, _
_
vb4 As _
Double, Optional b2 As Variant) As Double
'mit s1 = Schicht 1 Tiefe, tw = Tiefe Grundwasser, b1 = oberer Radius des Erdkegelsstumpfes
' ru = unterer Radius des Erdkegelstumpfes, t1...t4 = einzelne Fund.höhen
' vb1...vb4 = Betonvolumen 1...4, b2 = unterer Radius bei mehreren Schichten
Dim vol1 As Double, vol2 As Variant, Te2 As Double, Te3 As Double, Tges As Double
Dim vb1b2 As Double, vb1b3 As Double, vb1b4 As Double, p As Variant
Dim r1 As Variant, r2 As Variant, v1 As Variant, v2 As Variant
vol1 = WorksheetFunction.Pi / 3 * (b1 ^ 2 + b1 * ru + ru ^ 2) * s1 'für Volumen Erde bei _
_
Tges <= s1
vol2 = WorksheetFunction.Pi / 3 * (b1 ^ 2 + b1 * b2 + b2 ^ 2) * s1 'für Volumen Erde bei _
_
Tges > s1
Te2 = t1 + t2
Te3 = t1 + t2 + t3
Tges = t1 + t2 + t3 + t4
vb1b2 = vb1 + vb2
vb1b3 = vb1 + vb2 + vb3
vb1b4 = vb1 + vb2 + vb3 + vb4
r1 = (b1 - ru) / s1 * (s1 - tw) + ru 'unterer Radius auf Höhe Tw für Tges <= s1 ( _
Strahlensatz)
r2 = (b1 - b2) / s1 * (s1 - tw) + b2 'unterer Radius auf HöheTw für Tges > s1 ( _
Strahlensatz)
v1 = WorksheetFunction.Pi / 3 * (b1 ^ 2 + b1 * r1 + r1 ^ 2)
v2 = WorksheetFunction.Pi / 3 * (b1 ^ 2 + b1 * r2 + r2 ^ 2)
'prozentualer Anteil p des Erdvolumens über Wasser im Fall tw < s1
If tw < s1 And s1 >= Tges Then p = v1 / vol1
If tw < s1 And s1 < Tges Then p = v2 / vol2
' Erdvolumen für den Bereich tges <= s1 und tges > s1 > t3
If s1 >= Tges And (tw >= s1 Or tw = "-") Then _
Schicht1 = vol1 - vb1b4
If s1 >= Tges And tw < s1 Then _
Schicht1 = (vol1 - vb1b4) * p 'anteiliges Volumen über Wasser
If (s1 < Tges And s1 > Te3) And (tw >= s1 Or tw = "-") Then _
Schicht1 = vol2 - vb1b4 * s1 / Tges
If (s1 < Tges And s1 > Te3) And tw < s1 Then _
Schicht1 = (vol2 - vb1b4 * s1 / Tges) * p 'anteiliges Volumen über Wasser
' Erdvolumen für den Bereich t3 >= s1 > t2
If (s1 <= t3 And s1 > Te2) And (tw >= s1 Or tw = "-") Then _
Schicht1 = vol2 - vb1b3 * s1 / t3
If (s1 <= t3 And s1 > Te2) And tw < s1 Then _
Schicht1 = (vol2 - vb1b3 * s1 / t3) * p 'anteiliges Volumen über Wasser
' Erdvolumen für den Bere
If (s1 <= t2 And s1 > t1) And (tw >= s1 Or tw = "-") Then _
Schicht1 = vol2 - vb1b2 * s1 / t2
If (s1 <= t2 And s1 > t1) And tw < s1 Then _
Schicht1 = (vol2 - vb1b2 * s1 / t2) * p 'anteiliges Volumen über Wasser
' Erdvolumen für den Bereich t1 >= s1 > 0
If (s1 <= t1 And s1 > 0) And (tw >= s1 Or tw = "-") Then _
Schicht1 = vol2 - vb1 * s1 / t1
If (s1 <= t1 And s1 > 0) And tw < s1 Then _
Schicht1 = (vol2 - vb1 * s1 / t1) * p 'anteiliges Volumen über Wasser
End Function
Ich habe alle Variablen in der Funktion, die von b2 abhängig sind, ebenfalls als Variant deklariert. Meines Erachtens nach sollte die Funktion jetzt eigentlich rechnen. Leider gibt er mit immer noch die Fehlermeldung #WERT! zurück. Hat vielleicht noch jemand eine Idee?