2013-06-21 2 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