2016-06-07 16 views
0

Ich bekomme das immer so nervig "Ein in dieser Formel verwendeter Wert ist der falsche Datentyp." Fehler und ich kann nicht für das Leben von mir herausfinden, was es verursacht.Falscher Datentyp in Funktion

Public Function Cc(q As Double, ID As Double) As Double 

Dim YP As Double   'lb/100ft^2 
Dim Fan600 As Single 
Dim Fan300 As Single 
Dim n As Double    'Flow behavior index 
Dim K As Double    'Consistency index 

Dim Form As Worksheet 
Set Form = ThisWorkbook.Worksheets("ECD Generator") 

'========================================================================================================= 

YP = Form.Cells(5, 10).Value 
Fan600 = Form.Cells(6, 10).Value 
Fan300 = Form.Cells(7, 10).Value 

'========================================================================================================= 

n = 3.32 * WorksheetFunction.Log10(Fan600/Fan300) 
K = 5.1 * Fan600/(1022^n) 

Cc = 1 - (1/(2 * n + 1)) * (YP/(YP + K * ((3 * n + 1) * q/(n * WorksheetFunction.Pi * (ID/2)^3))^n)) 

End Function 
+1

In welcher Zeile erscheint der Fehler? Vermutlich 'n = 3,32 * WorksheetFunction.Log10 (Fan600/Fan300)'? –

+0

Ich glaube, innerhalb der Cc = ... –

+0

Wenn ich es bei Cc brechen = alles scheint so gut läuft bisher. n und k werden berechnet –

Antwort

2

Ausführen dieses Code in Excel 2013, die Cc = ... Ausdruck wirft einen "Ausdruck zu komplex" Fehler. Vereinfachen Sie den Ausdruck unter Verwendung von temporären Variablen:

n = 3.32 * WorksheetFunction.Log10(Fan600/Fan300) 
K = 5.1 * Fan600/(1022^n) 

'Add these temp variables to make the "Cc = ..." expression less complex. 

Dim t1 As Double 
t1 = 1/(2 * n + 1) 

Dim t2 As Double 
t2 = n * WorksheetFunction.Pi * (ID/2)^3 

Cc = 1 - t1 * (YP/(YP + K * ((3 * n + 1) * q/t2)^n)) 
'Cc = 1 - (1/(2 * n + 1)) * (YP/(YP + K * ((3 * n + 1) * q/(n * WorksheetFunction.Pi * (ID/2)^3))^n)) 
+0

Vielen Dank! tritt dieser Fehler nur auf, wenn die Gleichungen manchmal zu lang werden? –

+0

Ich bin nicht vertraut mit VBA. Aber ich weiß, dass es einige "interessante" Verhaltensweisen gibt, die in den meisten anderen Sprachen nicht vorhanden sind. –

3

Mit den Werten, die Sie in den Kommentaren geliefert bekam ich einen anderen Fehler von

16: Expression zu komplex

Informationen zu diesem Fehler kann here gefunden werden. Im Grunde passiert zu viel Mathematik in einer einzigen Berechnung.

Um das zu umgehen habe ich Cc es in zwei Teile gebrochen und das ist vorbei der Fehler. Ich weiß, dass dies nicht der Fehler ist, den Sie in der Frage angezeigt haben, aber es besteht eine gute Chance, dass sie miteinander verwandt sind.

Versuchen Sie, die unter Ersatz der Cc Codezeile

Cc = n * WorksheetFunction.Pi * (ID/2)^3 
Cc = 1 - (1/(2 * n + 1)) * (YP/(YP + K * ((3 * n + 1) * q/Cc)^n)) 

Um zu bestätigen, ist dies die einzige Zeile ersetzen Cc = mit zwei Linien beginnen.

+0

Danke für die Hilfe! –

+0

Nur auf die Post geschlagen! froh, dass wir dort angekommen sind. –

Verwandte Themen