EXCEL - VBA

텍스트로 된 수식의 값 구하기(4 - 1) - Evaluate 함수

별동산 2023. 7. 19. 08:12
반응형

1. Evaluate 함수

가. 정의

엑셀 이름을 오브젝트 또는 값을 변환합니다(Converts a Microsoft Excel name to an object or a value).

 

이름(Name)은 수식(Formula)이 될 수도 있고, 셀 주소 또는 범위 등이 될 수도 있습니다.

 

나. 구문

expression.Evaluate (Name)

 

- expression은 오브젝트를 가르키는 변수로 Application, Book1.xlsx, Sheet1 등이 될 수 있습니다.

 

- Name은 아래와 같이 다양한 형태가 될 수 있는데, VBA 에디터를 실행한 후 직접 실행창에서 간단히 결과를 확인할 수 있습니다.

 

다. Name의 종류 및 사용 예

 

텍스트수식4.xlsx
0.02MB

 

 

 

Name 사용 예
Formulas 수식으로 텍스트로 된 수식도 가능합니다.
예) 3*4, "5/2"

?evaluate("3*4")
A1-style references A1 형식 셀 주소로 큰따옴표 안에 넣어야지 큰따옴표가 없으면 변수로 인식하므로 에러가 발생합니다.
예) "A1", "C5"

Evaluate("A6").Value = 25 
는 A6셀에 25를 입력하는 것입니다. 메소드이므로 ?를 사용하지 않습니다.
Ranges 범위로, 교집합과 합집합 등을 나타내기 위한 연산자인 콜론, 공백(교집합), 쉼표(합집합) 등을 사용할 수 있수 있습니다.
예) "a1:c3", "a1:c3, f1:h3" , "a1:c3 b2:d4"

[evaluate("a1:c3").font.bold=true] 의 실행 결과


[evaluate("a1:c3 b2:d4").font.bold=true]의 실행 결과
Defined names 정의된 이름.

예) B4에서 D4까지 선택한 후 '사행선택'이라고 이름을 정의한 후 직접 실행창에서 
evaluate("4행선택").font.bold=true라고 입력하고 엔터키를 누르면
B4에서 D4셀까지 범위만 글자가 굵게 됩니다.
External references 외부 참조. 다시 말해 Sheet1에서 Sheet2를 참조하거나, 통합문서1.xlsx에서 통합문서2.xlsx를 참조하는 경우를 말합니다.

예) ?evaluate("Sheet1!a5")
?evaluate("[텍스트수식3.xlsx]Sheet1!a5")


=> 값을 표시해야 하므로 print에 해당하는 물음표를 사용해야 하며, 엑셀 파일명, 시트명과 셀주소를 큰따옴표안에 넣고, 엑셀 파일명은 대괄호안에, 시트명과 주소는 !로 연
Chart objects 차트 오브젝트의 속성 또는 메소드에 접근하기 위한 Legend(범례), Plotarea 등 차트 오브젝트 이름

예) ?activechart.evaluate("범례").Font.name


마이크로소프트 도움말 사이트에서는
?Charts("Chart1").evaluate("범례").Font.name
가 된다고 되어 있는데, 아래와 같이 '아래 첨자 사용이 잘못되었다'는 에러 메시지가 표시됩니다.
여기서 아래 첨자란 차트이름을 지정하는 Charts("Chart1")이 잘못되었다는 것입니다.



그래서 차트 이름을 한글로 바꿔서
?Charts("차트1").evaluate("범례").Font.name
이라고 해도 동일한 에러가 발생합니다.
Form Control number 워크시트의 폼 컨트롤을 지정하기 위한 이름 또는 숫자

예) Evaluate("Label 1").Caption = "Hello"
Evaluate("레이블 1").Caption = "Hello2"


아래와 같이 Label 1이라고 하지 않고 1이라고 지정해도 됩니다.
Evaluate("1").Caption = "Hello"

 

[대표 이미지]

반응형