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



AutoCAD ActiveX 맛보기 강좌(10)

Offset속성으로 원하는 셀에 쓰기
오늘은 어떤 range개체나 현재셀(activecell)을 기준으로 원하는 위치에 값을 넣거나 읽을 때 꼭 필요한 offset속성에 대해서 알아보겠습니다. 프로그램의 장점이 여러개의 일을 프로그램이 해준다는 것이죠? 사람이 하면 지겨워서 못할일을 프로그램은 아주 쉽게 해줍니다. 따라서 여러셀의 값들을 읽거나 쓰는 작업이 필요한 경우가 많습니다. 예를 들어서 [다정다감] for Excel의 기능중 pline2xls과 같이 어떤 좌표들을 읽어서 현재셀을 기준으로 또는 사용자가 선택한 셀을 기준으로 아래쪽으로 쭈~욱 써나가야 한다면 어떻게 할까요?

range("A1")=1
range("A2")=2
range("A3")=3
...

이런식으로 쭈욱 써나갈 수야 업겠죠? range개체에는 offset이란 속성이 있습니다. 사용법은 range.offset(이동행수,이동열수) 입니다. 예를 들어서 range("a1").offset(1,1) 은 range("b2")라는 표현과 같습니다. "a1"에서 아래로 한줄, 우측으로 한열을 이동하면 "B1"이 되겠죠?

그럼 한가지 테스트를 해볼까요? 현재 셀위치에서부터 아래로 10줄에다가 1부터 10까지의 숫자를 넣는 프로그램을 만들어보도록 하겠습니다. 이번에는 매크롤를 기록하는게 아니라 직접 VisualBasic Editor를 이용해서 만들어보도록 하겠습니다. 우선 VisualBasic Editor를 띄웁니다. 그런데 이상합니다. 메크롤륵 기록할 창이 없습니다. 당황하지 마시고 왼쪽 project탐색기를 보시기 바랍니다. 현재 열려있는 엑셀파일의 아래에 모듈이 없다면 매크롤르 기록할 수 없습니다. 결국 매크로는 excel파일의 모듈이라는 곳에 기록되는 것입니다. 아주 오래전 엑셀버젼에서는 캐크로 쉬트라는데다 매크로를 기록했던 시절이 있었습니다. 모듈도 마치 쉬트처럼 Excel파일의 일부라고 생각하시면 될 것 같습니다.

매크로를 기록하기 위해서 proejct창에서 현재열려있는 파일의 이름에서 오른쪽 마우스를 클릭하면 삽입이라는 메뉴가 나오고 그걸 클릭하면 모듈을 삽입할 수 있습니다. 모듈을 삽입하면 엑셀파일 아래에 Module1이라고 모듈공간이 생긴걸 보실 수 있을 것입니다.

  

오른쪽에는 code를 입력할 수 있는 창이 생겼고, 커서가 위치하고 있습니다. 이부분에 코드를 입력하면 되겠죠? 현재셀아래에 1부터 10까지 쓰는 매크로를 한번 만들어보겠습니다. 우선 sub로 매크로 이름을 정의해주어야겠지요? 그냥 write10이란 이름으로 만들어볼까요?

sub write10()이라고 입력하고 enter를 치면 자동적으로 end sub가 입력됩니다. 그리고 그 두줄 사이에 커서가 위치하게 되지요. 그 안에다 코드를 쎃넣으라는 뜻이겠지요? 참 친절도 합니다.


그러면 그 사이에 아래와 같이 단 세줄을 입력해줍니다.


for문은 for와 enxt사이의 code들을 반복실행해주는 기능이 있습니다. 프로그래밍의 중요한 것중 하나가 반복문의 사용입니다. i=1부터 시작해서 10까지(for i=1 to 10) activecell.offset(i,0)을 반복하라는 명령입니다. activecell.offset(i,0)이 가장 중요한 문장이겠죠? 이 i가 1부터 10가지 바뀌면 어떻게 작용할 것인가를 i대신에 1,2,3..를 대입해보면서 해보면 되겠죠. 1을 대입했다고 하면 activecell.offset(1,0)=1이란 문장이 되겠지요? 현재셀에서 아래로 한줄 내려간 셀에다 1을 입력하라는 뜻입니다. 2를 대입하면 activecell.offset(2,0)=2가 되겠죠. 현재셀에서 아래로 두줄내려가서 2를 넣어라... 라는 뜻이되겠죠? 계속 반복하면 현재셀의 한줄 아래서부터 10줄 아래까지 숫자들이 입력이 될 것입니다. 결구 for문을 풀어서 쓰면..

activecell.offset(1,0)=1
activecell.offset(2,0)=2
activecell.offset(3,0)=3
activecell.offset(4,0)=4
activecell.offset(5,0)=5
activecell.offset(6,0)=6
activecell.offset(7,0)=7
activecell.offset(8,0)=8
activecell.offset(9,0)=9
activecell.offset(10,0)=10

이라고 쓴것과 같을 것입니다. 10줄을 써야되는 문장을 for라는 문장이 간단하게 해결해주는 것이죠.

이제 실행버튼을 눌러서 프로그램을 실행시켜보면... 아래와 같이 입력됩니다. 이제 반복되는 작업도 쉽게 처리할 수 있겠죠? 현재의 셀을 바꿔가면서 실행시켜보세요~


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



dolljong@dreamwiz.com