지식은 공유되었을 때 그 힘을 발휘한다.



AutoCAD ActiveX 맛보기 강좌(8)

Range개체 뜯어보기
어제 range("B1")=Range("A1") 을 이용해서 B1에 A1의 내용을 그대로 복사해서 넣었는데요. 이상하다고 생각하시는 분이 있을지도 모르겠습니다. 분명 개체,속성,메서드를 이용해서 프로그래밍을 한다고 했는데, 단지 개체만으로 이런게 가능한가? 라고 말이죠. 사실 이 코드에는 Range()뒤에 .value가 생략된 것입니다. 직접실행창에다 ?Range("A1").value라고 입력해보세요.

앗.. 이상한 창이 떴다. range("a1") 다음에 .을 입력했을 때 위 그림같은 창이 뜹니다. 이창은 Range개체가 가진 속성,메서드,이벤트를 모두 보여주는 것입니다. Value를 타이핑해도 되고 키보드나 마우스를 이용해서 Value를 찾은 다음 Tab키를 눌러주면 입력이 됩니다. value를 입력하기 전에 쭈욱 한번 훑어보죠. 와~ 뭐가 이리 많나? 수십개의 속성과 메서드가 있군요.

윈도우 프로그램(특히 VBA)은 이런 것들을 적절히 찾아서 잘 써먹는 것이 프로그램을 잘하는 것입니다. 예전 프로그램밍은 필요한 기능을 모두 만들어 썼지만 요즘은 이렇게 미리 제공된 것들을 잘 조합해서 프로그래밍을 해야합니다. 일단 이 정체불명의 창을 한번 돌아다녀보기로 하죠.

  

제일 왼쪽에 그림이 속성과 메서드를 구분지어주는 아이콘인데요. 뭔가 날라가는 듯한 그림이 메서드, 손에 카드를 들고 있는 그림이 속성입니다. 이중 지금 눈에 보이는 메서드와 속성중에서 한개씩만 테스트를 해보도록 할까요? 우선 맨위의 Activate메서드에 대해서 알아볼까요? 우선 Excel에서 B1셀을 선택합니다. 그런다음 직접실행창에 아래와 같이 입력한 다음에 엔터를 치면.. 어떻게 될까요? Excel에서 확인을 해보면 A1셀이 선택이 되어 있습니다. 아~ Active는 저번에 공부한 Select하고 비슷한 것이구나. 라는 걸 알 수 있습니다.

  

일번에는 속성하나만 테스트 해볼까요? 아래쪽에 보면 address라는 속성이 보입니다. 이녀석은 뭐하는 놈일까요? 직접실행창에 입력해보죠머.. Range("a1").address하고 엔터를 탁 치니까... 아래와 같이 $A$1이라는 A1의 주소값을 보여주는군요. 그래서 Address라는 속성은 어떤 개체의 주소를 리턴해준다는 것을 알 수 있었습니다.

마찬가지로 Value라는 속성은 그 셀에 들어있는 값을 리턴해줍니다. 그럼 이 Value 속성을 알아보기 위해서 A1셀에 =1+1이란 수식을 입력해보겠습니다. 그 다음 range("a1").value라고 입력하면 수식의 결과값인 2를 돌려줍니다. 결국 value는 셀의 "내용"이 아닌 "결과값"을 보여준다는 걸 알수 있었습니다. 그렇다면 셀에 들어있는 수식을 알아내려면 어떻게 해야 할까요? 지난번에 잠깐 본 FormulaR1C1이란 속성을 이용합니다. 아래 그림과 같이 말이죠.

  
Range개체에는 정말 재밋는 속성,메서드들이 많이 있네요.. 그럼 마지막으로 딱 한가지만 더 해보도록 할까요? 아래그림처럼 직접실행창에 입력해보세요. Range("a1").addcomment text:="1+1은 얼마일까요~?" 라고요.

  
실행해보셨나요? Excel로 가서 달라진 점을 찾아보세요. A1셀에 우리가 입력한 메모가 삽입되어있죠? 아래 그림처럼요.


Addcomment 매서드는 range개체에다 comment를 달아주는 메서드였군요.. 이렇게 개체,속성,메서드를 하나 하나 익혀나가는 것이 VBA 내공을 쌓아나가는 것입니다.

오늘은 여기서 마치기로 하고 내일 계속하도록 하겠습니다.



dolljong@dreamwiz.com