2017-04-09 21 views
0

投稿Excel関数内で変数を宣言する方法は?

私はコードを変更しました。

Option Explicit 
Public Function Isokinectic(streamVelocity As Double, sampleVelocity As Double, probeDiameter As Double, density As Double, particleDiameter As Double, viscosity As Double) 

     Dim s As Double 
     Dim stk_coefficent As Double 
     Dim stk As Double 
     Dim d As Double 

     s = ((0.16 * 10^-4)/particleDiameter) + 1 
     stk_coefficent = (1/(18 * viscosity)) * density * particleDiameter * particleDiameter * s 
     stk = (streamVelocity/probeDiameter) * stk_coefficent 
     d = 1 + (2 + 0.62 * (sampleVelocity/streamVelocity)) * stk 
     Isokinectic = 1 + ((streamVelocity/sampleVelocity) - 1) * (1 - 1/(d)) 

End Function 

しかし、動作しません。しかし、サブMAIN()を追加するときは、このようにします。できます。

Option Explicit 
Function Isokinectic(streamVelocity As Double, sampleVelocity As Double, probeDiameter As Double, density As Double, particleDiameter As Double, viscosity As Double) 

     Dim s As Double 
     Dim stk_coefficent As Double 
     Dim stk As Double 
     Dim d As Double 

     s = ((0.16 * 10^-4)/particleDiameter) + 1 
     stk_coefficent = (1/(18 * viscosity)) * density * particleDiameter * particleDiameter * s 
     stk = (streamVelocity/probeDiameter) * stk_coefficent 
     d = 1 + (2 + 0.62 * (sampleVelocity/streamVelocity)) * stk 
     Isokinectic = 1 + ((streamVelocity/sampleVelocity) - 1) * (1 - 1/(d)) 

End Function 

Sub MAIN() 
    MsgBox Isokinectic(0.1, 0.2, 0.3, 0.4, 0.5, 0.6) 
End Sub 

オリジナルポスト:

私は、Excel関数の式をコーディングしてみました。しかし、#valueを得ました

Function Isokinectic(streamVelocity As Double, sampleVelocity As Double, probeDiameter As Double, density As Double, particleDiamter As Double, visocity As Double) 

     Dim s As Double 
     Dim stk_coefficent As Double 
     Dim stk As Double 
     Dim d As Double 

     s = (0.16 * 10^ - 4/particleDiameter) + 1 

     stk_coefficent = (1/(18 * viscosity)) * density * particleDiamter * particleDiameter * s 

     stk = (streamVelocity/probeDiameter) * stk_coefficent 

     d = 1 + (2 + 0.62 * (sampleVelocity/streamVelocity)) * stk 

     Isokinectic = 1 + ((streamVelocity/sampleVelocity) - 1) * (1 - 1/(1 + d)) 

     End Function 

私はこのコードで間違っていましたか?少しクリーンアップで

+0

私にとってはうまく動作しています。どのように呼びますか?> –

+0

挿入機能。次に、変数を入力します。 – JOHN

+0

ヘッダーのタイプミス*** particleDiamter ***は*** particleDiameter ***以外の問題もあります –

答えて

0

Option Explicit 
Function Isokinectic(streamVelocity As Double, sampleVelocity As Double, probeDiameter As Double, density As Double, particleDiameter As Double, viscosity As Double) 

     Dim s As Double 
     Dim stk_coefficent As Double 
     Dim stk As Double 
     Dim d As Double 

     s = ((0.16 * 10^-4)/particleDiameter) + 1 
     stk_coefficent = (1/(18 * viscosity)) * density * particleDiameter * particleDiameter * s 
     stk = (streamVelocity/probeDiameter) * stk_coefficent 
     d = 1 + (2 + 0.62 * (sampleVelocity/streamVelocity)) * stk 
     Isokinectic = 1 + ((streamVelocity/sampleVelocity) - 1) * (1 - 1/(1 + d)) 

End Function 

Sub MAIN() 
    MsgBox Isokinectic(0.1, 0.2, 0.3, 0.4, 0.5, 0.6) 
End Sub 

enter image description here

+0

ありがとう!できます! しかし、私はサブMAIN()部分を削除します。そして型= Isokinectic()、それは動作しません。何故ですか? – JOHN

+0

#valueです。 LOL – JOHN

+1

これで動作します。私はモジュールをVBAプロジェクトに挿入する必要があるようです。シートではありません。 – JOHN

0

あなたのオリジナルのポストであなたが計算したS、D、STKいますが、他のVelocity &の値を取得している後段の無いところでは、値エラーの理由です。 サブルーチンでは、式にValueを入力しているので、Function関数でそのコマンドラインを記述してください。セルからVelocityの値を渡すことを忘れないでください。

関連する問題