You are on page 1of 6

LECTURE NO: VB0003(사각형그리기Ⅱ)

Homepage// www.iExceller.com
최초 작성일 3/27/2000
최종 수정일 7/22/2002
작성자: Exceller(권현욱, exceller@netian.com)
<주의> 본 파일에 임의의 행이나 열을 삽입시키지 마십시오. 코드실행시 에러가 발생할
수 있습니다. 코드에 익숙한 분들이야 해당 부분을 찾아가서 셀주소를 변경시키면 되겠지만

Visual Basic을 왜 배워야 하는지, 배우면 무엇을 할 수 있는지 질문하신 분이 있더군요


가장 중요한 질문인 것 같습니다. 목적이 분명하지 않다면 쉽게 포기하거나 표류하기
십상이니까요. 앞으로 강좌를 따라 하시다 보면 저절로 느끼시게 될 것입니다만,
VB로 어떤 일을 할 수 있는지 개략적인 것은 오늘 함께 띄운 파일을 참고하시기 바랍니다
"인터넷의 한계는 인간의 창의력"이라면 VB의 한계는… 상상력의 한계라고 해 둘까요
수작업으로 할 수 있는 것이면 거의 대부분 가능합니다.

VB를 제대로 공부하지 않고 그냥 수박 겉핥기로만 배운 사람들이 "비주얼 베이직은


BASIC 언어에서 비롯되었기 때문에 한계가 많아서 …" 운운하는 경향이 있습니다.

절대 그렇지 않습니다!!!
비주얼베이직은 마이크로소프트사에서 정책적으로 키우는 언어입니다. VB 본연의
라이브러리 외에 DAO(Data Access Object)의 각종 오브젝트들, 각종 DLL(Dynamic Link Library)
API 함수 등을 모두 불러와서 쓰면 그 확장성은 거의 무한대 입니다.

뿐만 아니라 ODBC(Open DataBase Connectivity)를 활용하여 오라클이나 SyBase 같은


각종 데이터 베이스들도 (거의) 완벽하게 불러와서 쓸 수 있다고 합니다(요부분은
Exceller가 테스트 해 본 사항은 아니고... MS社의 매뉴얼에 보면 그렇게 나와 있습니다

지구상에 없는 새로운 것을 만들려면 C언어나 그 밖의 언어를 배우시고 이 세상에 이미


존재하는 것들을 잘 조합해서 더 성능이 뛰어난 어떤 것을 만들려면 VB(VBA)를 배우시기를
권합니다(더 중요한 것! VBA를 배우려고 추가 비용을 들여 프로그램을 구입할 필요가
없다는 것이지요).

본론으로 돌아와서… 지난 시간에 워크시트에 사각형 그리는 것에 대해 설명을 드렸지요


왜 허구많은 예제 다 놔두고 업무적으로 별 도움이 안되는(안될 것 같은) 사각형을 그리라고
하는 것이야!' 하고 생각하시는 분 없으신지?

제가 경험한 바에 의하면 순환, 반복문을 몸에 붙이는 가장 좋은 방법이 사각형 그리는


더군요. 아무 이유없이 그저 보기 좋으라고 사각형을 그리는 것이 아님을 아시고…

이번 강좌에서는 사각형그리기 코드에 대해 하나하나 설명을 드립니다.

Sub MakeRectangles1()
Dim intX As Integer
Dim intY As Integer
Dim rngAdd As Object
Dim OOO As Integer/Object 이런 것들이 도대체 무엇인지 의문이 들지요?
Dim은 Dimension의 줄임말로 '변수선언'이라고 합니다.
프로그래밍을 배울 때 가장 신경쓰이지만 또한 가장 중요한 것이 바로 이 변수선언
변수란 무엇이고 이것을 선언한다는 것은 무엇인가?
백문이 불여일견! 직접 확인해 보도록 하지요.
아래의 두 셀에 적당한 숫자를 각각 입력한 후 아래 버튼을 누르세요.(너무 큰

1
35

답이 탁 나왔지요? 다른 값으로 바꾸어 넣고 다시 위의 버튼을 눌러 보세요.


마찬가지로 답이 나오지요? 위의 버튼은 아래의 코드를 실행시켜 주는 것입니다.

Sub 변수란무엇인가()
Dim i As Integer
Dim j As Integer
Dim k As Integer sheet1 의 b29 셀에 있는 값은 i 라는 그릇에 담아두고 ,
sheet1 의 b30 셀에 있는 값은 j 라는 그릇에 담아둔 후
이 두 개의 셀에 있는 값을 곱한 것을 다시 k 라는 그릇에
i = Sheets("sheet1").Range("b29").Value 담아둔 후 b31 셀에 k 라는 그릇에 담긴 값을 표시하게 한
j = Sheets("sheet1").Range("b30").Value 것이지요 .

k=i*j
Sheets("sheet1").Range("b31") = k
End Sub

위의 예에서 보듯이 변수라는 것은 "수시로 변화하는 어떤 값을 담아두는 그릇"이라고


할 수 있습니다. 그런데 이 그릇에는 싸이즈가 정해져 있고 각 싸이즈별로 많은 종류의
그릇, 즉 변수가 준비되어 있습니다. 슬슬 신경질이 날라구 하지요? 변수도 잘 모르겠는데
한 종류의 변수만 있는 게 아니고 종류별로 있다니!!!

쉽게 설명하자면... 여러분의 집 주방에 있는 그릇들을 한번 떠올려 보세요.


밥을 담는 밥그릇, 국을 담는 국그릇, 반찬 그릇, 간장 종지, 큰 대접 등등등…
얼마나 많은 그릇이 있습니까? 간장을 국그릇에 부어놓고 먹는 사람은 없겠지요.

변수도 마찬가지입니다.
각 상황에 맞는 그릇들을 모두 준비해 두었기 때문에 종류가 많은 것이지요.

B55, B56 셀에 큰 숫자를 한번 넣고 "변수란 도대체 무엇인가" 코드를 다시 한번 실행시켜

"오버플로(Overflow)"라는 에러 메시지가 나타나지요?

이것은 준비한 그릇싸이즈보다 더 큰 값이 들어오니까 넘쳐서 나타나는 에러입니다.


Dim OOO As Integer에서 Integer 대신에 Double이라고 고쳐 넣고 다시 실행시켜 보시기
바랍니다. 이제는 아무리 큰 값을 넣어도 제대로 실행이 되지요?
이것이 바로 변수의 타입, 즉 종류인 것입니다.

그러면 또 이런 의문이 또 들지요?


"그렇다면 처음 시작할 때 부터 큰 변수타입을 선언하면 될텐데 무엇 때문에 작은 변수를
선언하나요?"

라면하나 끓이는 데 가마솥 걸어놓고 끓이는 사람은 없겠지요?


이유는 바로 비경제적이기 때문입니다. 컴퓨터에서 그릇은 메모리와 직결됩니다. 즉
큰 그릇을 많이 준비하면 할수록 시스템의 성능 저하로 연결될 수 있기 때문이지요.
변수에 대해서는 여기까지만 이해하시고 넘어가도록 합니다. 앞으로 계속해서 귀가
아프도록, 아니 눈이 아프도록 반복될 테니까요.

Set rngAdd = ActiveSheet.Range("e5")


다음으로 ActiveSheet라는 것은 말 그대로 Active 즉, 현재 시트라는 뜻이므로 현재
위치를 rngAdd라는 변수에 담아둡니다.
For intX = 20 To 120 Step 10
For intY = 20 To 120 Step 10
ActiveSheet.Rectangles.Add(rngAdd.Left + intY, _
rngAdd.Top + intX, 8, 8).Select
Selection.Interior.ColorIndex = Int(Rnd * 56)
Next intY
Next intX
중요한 For … Next 구문이 나왔네요.
For I=1 To 100
…… 어쩌구 저쩌구 ……
Next
라고 하게 되면 "…… 어쩌구 저쩌구 …… "라는 명령을 1에서 100 즉 100번 수행하라는

만약 For … Next라는 구문이 없다면 어떻게 될까요? "…… 어쩌구 저쩌구 …… "라는 문장을
적어주어야 겠지요?
Range("d4").Select
d4셀을 Select 즉 선택하고 프로시져를 종료합니다.
End Sub

실제 코드는 몇 줄 안되는데 이것 저것 설명을 드리다 보니 좀 복잡하게 되어 버렸네요.


위의 내용들 중에서 정작 중요한 것은 검게 색칠된 부분들입니다.

프로그래밍은 반복입니다. 중요한 몇 개의 구문을 가지고 이렇게도 해보고 저렇게도 해보고


하면서 이해하게 되는 것이니까 처음에 잘 이해가 안된다고 해서 "난 안돼!!!" 하지 마시기를

오늘은 여기까지…

Exceller's Book: 엑셀 XP 예제 활용 - 아무도 가르쳐주지 않는 엑셀 XP 비법/디지털북스刊


엑셀을 처음 접하는 분들, 엑셀을 몇 년간 사용해 왔으나 엑셀의 체계를
다잡고자 하는 분들, 그리고 '이제 엑셀에 대해서는 나를 당할자가
없도다'라고 생각하시는 분들도 참고하시기 바랍니다.
에러가 발생할
시키면 되겠지만…

분이 있더군요.

고하시기 바랍니다.
라고 해 둘까요.

얼 베이직은

Dynamic Link Library) 파일들,

SyBase 같은

나와 있습니다).

세상에 이미
A)를 배우시기를

명을 드렸지요?
각형을 그리라고

각형 그리는 것이

로 이 변수선언 입니다.
요.(너무 큰 수는 말고!)

그릇에 담아두고 ,
그릇에 담아둔 후
을 다시 k 라는 그릇에
담긴 값을 표시하게 한

잘 모르겠는데

시 한번 실행시켜 보세요.

실행시켜 보시기

문에 작은 변수를
뜻이므로 현재 시트의 e5 셀의

수행하라는 것입니다.

…… "라는 문장을 100번

어 버렸네요.

저렇게도 해보고
" 하지 마시기를…

비법/디지털북스刊

You might also like