[VBA]내 코드에서 엑셀 함수를 불러 사용하는 방법

엑셀 함수(정확히는 워크시트 함수)에는 분야별로 많은 함수들이 내장되어 있다. 통계, 공학, 재무, 수학/삼각, 논리 등등 많이 있다. 이것을 내 VBA코드에서 활용할 방법은 없을까?

1) VBA 코드 안에서 풍부한 워크시트 함수를 호출하는 방법

2) A열 전체 중에서 가장 큰 값을 B1에 읽어오기

3) A열 전체 중에서 가장 큰 값을 가진 셀을 활성화하기

[VBA]VBA 함수들

VBA함수를 정리해놓은 사이트가 있어서 소개한다. 이들 사이트에서 복사한 다음, 출처를 표기할까 하는 생각을 좀 했다. 그러나, 개인적으로 누가 원저자인지를 모르겠어서 그냥 주소만 여기에 옮겨놓는다.

 

http://www.cancould.com.ne.kr/hamsu.htm

http://pmguda.com/464

http://skql.tistory.com/127

비주얼 베이직 함수라고 하는데, VBA 함수가 더 정확한 표현인 것 같다.

DoEvents함수를 효과적으로 사용하기

DoEvents함수는 CPU-intensive code를 예방하는 방법 중의 하나이다.
수치해석과 같이 CPU계산량이 많은 응용프로그램일 경우, 계산에만 몰두하느라 다른 응용프로그램을 사용할 수 없게 된다. 해당 프로그램도 응답이 없어 마치 죽은(?) 듯한 반응을 보인다. 이를 방지하기 위해서 다른 응용 프로그램에도 CPU사용을 허락하는 것이 DoEvents함수이다.
이렇듯 좋은 취지의 함수이지만, 이 함수를 남발할 경우 오히려 계산속도가 현저히 떨어지는 상황을 맞이할 수 있다. 그럼 어떻게 할 것인가?

1)DLL 함수 선언

2)함수 사용

이렇게 하면 입력값이 있을 때만, DoEvents 함수를 호출한다.
그냥 DoEvents함수를 사용하는 경우보다 계산속도가 빠르다.

문자열을 읽어서 단어로 나누어 주는 함수 짜기

입력받은 문자열을 쉼표와 빈칸에 따라 단어를 나누어 준다.

여기서 3)과 5)가 많이 비슷하고 중복된 것으로 느낄 것이다.
그래서 어느 한 쪽을 지워버리면 어떤 일이 생길까?
시간이 되시면 한 번씩 해보면 좋을 것 같다.
결론부터 말하자면, 빈 문자열도 하나의 단어처럼 취급될 수 있다.
즉, 원하는 결과를 제대로 얻을 수 없다.

[사용법]