2013-06-21 49 views
1

使用命名的單元格我有,我已經爲特定的細胞定義名稱的工作表。這些單元格將在函數中使用,我用他們的名字給他們打電話。在VBA函數

不過,我得到0,當我把它用Excel,彷彿姓名沒有連接或有一個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 

我該如何解決問題?

+0

你能給哪些值深度的例子,L_W_1,L_W_2和Sum_Len_1可以有? – MiVoth

+0

L_W_1 = 105 L_W_2 = 96 Sum_Len_1 = 37 – user2453446

回答

5

如果你只是寫min_w = L_W_1 * 0.868 * depth/1000 vba認爲L_W_1它是可變的(類型變量值= 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 
+1

謝謝這個偉大的工程! – user2453446

1

你可以把他們在括號將它們標記爲一個範圍: [Sum_Len_1] .value的,[L_W_2] .value的和[L_W_1] .value的