2013-06-21 8 views
1

У меня есть рабочий лист, где я определил имена для определенных ячеек. Эти ячейки будут использоваться в функции, и я вызываю их, используя их имена.Использование именованных ячеек в функции VBA

Однако, я получаю 0 как возврат функции, когда я вызываю ее с помощью Excel, как если бы имена не были связаны или имели значение 0.

Ниже приведен код, который я написал. «Sum_Len_1», «L_W_2» ans «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