web-dev-qa-db-ja.com

VBA関数で名前付きセルを使用する

特定のセルの名前を定義したワークシートがあります。これらのセルは関数で使用され、名前を使用して呼び出しています。

ただし、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

どうすれば問題を解決できますか?

5
user2453446

_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
_
10
MiVoth

[Sum_Len_1] .Value、[L_W_2] .Value、[L_W_1] .Valueのように、角かっこで囲んで範囲としてマークすることができます。

4
robotik