特定のセルの名前を定義したワークシートがあります。これらのセルは関数で使用され、名前を使用して呼び出しています。
ただし、Excelで関数を呼び出すと、名前がリンクされていないか、値が0であるかのように、関数の戻り値として0が返されます。
以下は私が書いたコードです。 「Sum_Len_1」、「L_W_2」、「L_W_1」は、ソースセルに付けた名前です。
Function min_w(depth)
If depth < Sum_Len_1 Then
min_w = L_W_1 * 0.868 * depth / 1000
Else
min_w = L_W_1 * 0.868 * Sum_Len_1 / 1000 + L_W_2 * 0.868 * (depth - Sum_Len_1) / 1000
End If
End Function
どうすれば問題を解決できますか?
_min_w = L_W_1 * 0.868 * depth / 1000
_と書くだけの場合、vbaは_L_W_1
_を変数(value = 0のバリアント型)と見なします。名前付きセルを参照するには、このRange("L_W_1").Value
のように実行する必要があります。
次のように変更すると機能するはずです。
_Function min_w(depth As Long)
If depth < Range("SUM_LEN_1").Value Then
min_w = Range("L_W_1").Value * 0.868 * depth / 1000
Else
min_w = Range("L_W_1").Value * 0.868 * Range("SUM_LEN_1").Value / 1000 + Range("L_W_2").Value * 0.868 * (depth - Range("SUM_LEN_1").Value) / 1000
End If
End Function
_
[Sum_Len_1] .Value、[L_W_2] .Value、[L_W_1] .Valueのように、角かっこで囲んで範囲としてマークすることができます。