2017-01-19 1 views
0

이것은 매우 단순화 된 예제입니다. 두 개의 명명 된 범위가 있습니다. 첫 번째 "연료"는 0.3으로 하드 코딩 된 값을 갖습니다. 두 번째 "Bill"은 통합 문서의 B2 값을 참조한 다음 (1 + 연료)를 곱합니다. I 셀 "C2"의 "빌"을 참조 할 때, I가 지정된 범위의 I (이 경우 650)의 출력을 얻을 수있는 방법 VBA를 사용하여 650명명 된 범위의 값 액세스

enter image description here

올바른 출력을 얻는다 "빌 "스프레드 시트에서 먼저"Bill "을 참조하지 않고 Range ("C2 ")를 사용하여 값을 얻지 않고 직접? 아래는 제가 시도한 몇 가지 것들입니다.

Sub named_range_value() 

Dim wb As Workbook 

Set wb = Workbooks("test") 


MsgBox Range("bill") 'Run-time error '1004': Method 'Range' of object '_Global' failed 

For Each nr In wb.Names 
MsgBox nr 'Loops three times and returns: 
      '=#NAME 
      '=Sheet1!$B$2*(1+fuel) 
      '=0.3 
Next 

End Sub 
+0

MsgBox는 범위 입력이 아닌 문자열 입력을 원합니다. 그것이 오류의 원인입니다. 값 또는 문자열을 포함하는 문자열을 전달해야합니다. –

답변

0

Application.Evaluate은 친구입니다. 이것은 주로 Excel에서 직접 입력 할 때 예상되는 것을 얻도록 설계되었습니다.

x = Application.Evaluate("Bill") 
y = Application.Evaluate(Names("Bill").Value) 
Debug.Print x, y 

모두 작동합니다. 첫 번째 형태는 짧고 똑 바르다. 두 번째는 좀 더 명확하며 때로는 모호성 제거에 유용 할 수 있습니다.

관련 문제