Excel & VBA---Brain Training
그럼 엑셀에서 영원히 정보를 보관하는 변수는 어디에 있나???
당연히 의문이 갈것이다..
프로그래밍을 하지 않을때 여러분은 엑셀의 어디에 정보를 넣는가??
셀에 숫자를 입력하기도 하고 문자를 입력하기도 하고
수식을 입력을 하기도 하고 셀의 서식을 하기도 하고
이런 모든 작업...여러분이 자판을 두들기던..마우스질을 하던
엑셀의 모양을 바꾸어 놓는 작업은 모두 엑셀의 어떤 부분의 정보주머니
영원히 보관된 변수에 정보를 써넣는 것이다
바로 이 부분이 VBA프로그래밍을 열나게 하고 임시정보장치의 변수에 넣고
또 이변수의 값이 ----------------->>>>엑셀로 넘어간다는 소리다
여러분이 자판을 두들기고 마우스질을 하는 대신에
자동으로 넘어가게 한다는 것이 바로 엑셀 프로그래밍이다
귀가 따갑도록 들어온 속성이라는 것이 바로 그놈이다
속성(Property)
그냥 그렇게 이름을 지어 놓은 것이다
그냥 변수이다..그러나 한번저장하면 고정된 값을 유지하는 값인것이다
여러분이 자판을 두들기던..마우스질을 하던
엑셀의 모양이 변하는 것..숫자가 바뀌는 것 이런것이 모두
속성값을 바꿔준다는 소리다
그런데 정보라는 것이 여러분들이 간단하게 한줄 씩 넣는 정보만 생각하면
우물안 개구리가 된다
변수선언을 습관화하라고 하는 것은
일종의 자원의 관리이다
여러분이 만드는 프로그램의 자원을 이름을 지어서 관리한다는 차원에서
자원의 리스팅을 하는 셈치고 변수작성습관이 중요하다는 소리다
작은 프로그램이라도 오고가는 정보가 수도 없이 많다
이제 문제를 다시 들여다 보자
버튼을 크릭하면 숫자가 바뀌는 부분을 엑셀의 셀이라고 생각해보자!!!
정보가 몇가지가 전달되고 있다고 생각하는 가???
오고가는 정보..
몇개가 전달되었나??
지금..엑셀을 열고 셀에 숫자를 입력해 보라!!
한가지 정보...값을 전달했다
이제 색상을 바꾼다..
마우스로 뚝딱거려..셀서식을 찾고 셀서식에서 바탕색을 빨강색으로 해주었다
색상정보를 전달했다
또 문자의 색상이 바뀌기도 하니까..문자의 색상정보도 전달 한것이다
모두 3개의 정보를 전달한 것이다
이번에는 Alt+F11키를 쳐서 VBA편집기를 열어 놓고
보기메뉴에서 직접실행창을 크릭하면 직접실행창이라고 하는 녀석이 열린다
이곳에서..위에서 값을 넣고 색상을 전달한 것을
프로그래밍적으로 전달해 보자
직접실행창에 아래와 같이 입력하고 엔터키를 탁 쳐보라
Range("A1").Value=3
이라고 입력하고 커서를 이곳에 위치한후 엔터키를 친다
그리고 현재 활성화되어있는 시트로 가보라..
현재시트의 A1셀에 3이라는 숫자가 입력되었을 것이다
요것이 프로그래밍적으로 엑셀의 어떤 속성에 값을 전달한 것이다
다시 이번에는 색상정보를 전달해 보자
range("A1").Interior.ColorIndex=3
라고 입력하고 엔터키를 친다
가서 보면 마우스질 하지 않고 색상이 빨강색으로 바뀌었다
이제 문자의 색상정보를 전달해 보자
range("A1").font.ColorIndex=2
이렇게 하여 바탕색은 빨강색에 문자는 3에 문자색은 흰색으로
바뀐것이고 이것을 프로그래밍적으로 바꾼것이다
직접실행창은 수시로 어느 속성에 값을 주어야 하지..??
표현식의 결과값이 얼마지??
어디에서 에러가 나지??
등등을 즉석에서 알아보는 아주 귀중한 창인데
초보님들은 그냥 모듈창에서 뭘 해보겠다고 땀을 빨빨 흘린다
이곳을 최대한 잘 이용하는 자!!
프로그래밍의 고수로 가는 자!!
Immediate Window..직접실행창!!! 프로그래밍을 재미있게 하고 싶으면
이놈과 친해져야 한다
Range("A1") .
이라고 하는 것은 워크시트의 A1셀을 찾아가는 주소이기도 하고
주소를 찾는 순간 이놈은 바로 오브젝트라고 하는 것이 된다
오브젝트도 종류가 줄줄이 있는 데 그중에서는 셀을 Range오브젝트라고 한다
오브젝트가 뭐여요???!!
이것도 정보를 담고 있는 창고에 불과하다
그러나 정보는 복잡해지니까..어떻게 정보를 체계적으로 잘 보관할수 없을까???
라는 욕구에서 의하여 만들어진 것이다
생각을 해보시라..
하나의 셀에는 한가지 정보가 들어가지 않았다
바탕색도 들어가고..문자정보도 들어가고..수식정보도 들어간다
그러니 하나의 셀에 들어가는 정보를 체계적으로 묶지 않으면 관리할 수 없다
그래서 하나로 묶어서 정보를 관리하기 위하면 만들어진 것이 오브젝트라고 우선
생각하시는 것이 편하다
물론 오브젝트는 아주 다양한 기능을 갖게 되지만
기본적으로 관련된 정보를 하나의 이름하에 관리한다!!!
라고 생각하자!!
Range("A1").Value=3
이라고 하면 Range오브젝트가 갖고 있는 Value라는 속성이 정보를 보관한다
3이라는 정보를 보관하고 있게 되는 것이다
엑셀은 Range오브젝트를 비롯하여 다양한 오브젝트들을 체계적으로 관리하고 있고
이것이 곧 엑셀의 화일구조인것이다
Excel Object Model 이라고 외국사이트의 검색창에 입력하고 때려보라
엑셀의 오브젝트들이 어떤 관계를 구성하고 있는지 알게 되고
(뭐가 이렇게 복잡해..하고 기죽지 말고 ..차근차근 가면 된다)
이것을 알아가는 것이 바로
엑셀프로그래밍의 출발이 되는 것이다
VBA에서 정보를 만들어서 혹은 엑셀의 어떤 오브젝트에서 값을 얻어서
예를 들면 아래와 같이 MS-Project프로그램에서 정보를 읽어다가
MS-Project에서 깝깝한 표현을 엑셀에서 보고 싶은대로 재 구성하여
보고서를 만들기도 하고 분석을 하기도 하니..
얼마나 할일이 많은 것이 VBA인것인지 알았으면 좋겠다!!
이런 변수..저런변수에 값을 저장하고
이런 속성에서 저런속성에서 값을 갖다가 계산하고 분석하여..
최종적으로는 엑셀의 오브젝트중의 적당한 속성에 값을 전달하는 것이다
이제 VBA표현식으로 만들어낸 난수를 엑셀의 오브젝트의 속성에
전달하는 과정을 살펴보자