Skip Navigation Links.
Expand VBAVBA
엑셀프로그래밍이 필요한 이유
Expand ExcelExcel
Expand External LibraryExternal Library
Expand SolutionSolution
Expand EssayEssay

Excel & VBA---Brain Training



버튼을 크릭해 보시기 바란다

9




무엇을 보여드리려고 한 것이냐 하면..
작은 테두리 하나도 오브젝트로 관리한다는 것을 보여드리는 것이다
오브젝트는 딴것이 아니고 여러정보를 모아서 갖고 있는 놈이 오브젝트라고
우선 쉽게 생각하시고..!!
테두리 하나라도 정보가 많은 것이다
색갈,
두께,
선의 형태..스타일..점선이냐..직선이냐..
이렇게 여러개의 정보를 모아서 갖고 있게 하려고 오브젝트라는 형식을
사용하는 것이다
좀 더 쉽게 생각하시면
노트필기할때 중요한 제목쓰고 한칸 들여서 주욱 쓰고 또 세부내용이 나오면
또 한칸 들여서 쓰고..그렇게 체계적으로 노트정리를 하듯이 하나의 큰제목이
큰 오브젝트이고 작은 제목은 큰제목의 자식 제목이듯이 자식 오브젝트가 되고
노트정리만 잘 했어도 하나도 복잡할 것이 없는 것이다

위에서 수상한 놈들이 있다
xlEdgeRight
xlEdgeLeft
이것은 뭔가?????
상수라고 하는 것!!!
상수는 변수와 반대로 변하지 않고 고정된 값을 갖고 있는 변수라고 하면 되겠다
이것은 엑셀 자체에서 제공하는 상수로서 하나더 이름을 붙여 [열거상수]라고 한다
열거상수...Enumerating Constant
주욱 나열하는 상수..

실은 위의 열거상수들은 모두 숫자들이다
만약에 전달되는
변수가 1이면 사각형을 그리고
변수가 2이면 동그라미를 그리고
변수가 3이면 마름모를 그리고
변수가 4이면 사다리꼴을 그리고
라는 명령을 한다고 치자

If intX=1 Then
  ...
ElseIf intX=2 Then
  ...
ElseIf intX=3 Then
  ...
ElseIf intX=4 Then
  ...
Endif

라고 할때..1,2,3,4라는 숫자는 사람이 인식하기에는 좀 그렇지 않은가??
헷갈리고 표를 하나 만들어 놓고 일일이 찾아보면서 일을 하여야 할것이다
그래서 상수라는 것을 준비하게 되는 것이다
위에서 보듯이
xlEdgeRight라고하는 글과 1이나 2나 3 보다는 읽기가 좋이 않은가???
앞에 xl이라고 붙어 있는 것은 엑셀에서 제공하는 상수라는 소리다
억세스에서 제공하는 것은 ac라는 두문자가 붙고
워드가 제공하는 것은 wd라고 두문자가 붙는다
vba가 제공하는 것은 vb가 붙어서 표시를 해준다
office에서 공통으로 제공하는 상수는 mso라는 것이 붙는다

Range("A1").Borders(xlEdgeTop).ColorIndex=3

을 아래와 같이 표현해도 된다

Range("A1").Borders(8).ColorIndex=3

편집기에서 F2키를 누르고 나타나는 개체(오브젝트)찾아보기창에서
보면 아래와 같이 상수도 볼수 있는 것이다



Range오브젝트의 Borders속성에 값을 8을 주면
셀의 윗쪽테두리 오브젝트(Border)를 만들어 주겠다..
엄밀히 따지면 만들어 주겠다!!가 아니고 접근하게 해주겠다!!
라는 약속인 것이다

그런데 8을 주면...이라고 하는 것 보다는
xlEdgeTop이라는 것을 주면 ....이 구체적이고 코딩하기 편해지는 것이다
그래서 상수라는 것이 필요한것이고
열거상수는 위의 그림과 같이 필요한 목적에 따라서 몰아서 열거해주는
상수라는 소리인 것이다
테두리만 다루는 상수..테두리만 다루는 상수를 열거해줄테니 자네가
알아서 선택하시게!!!라는 소리다

사용자가 열거상수도 만들어 사용할 수 있을까??
그럼 있구 말구..
아래 화일에서 상수와 열거상수를 응용해서 만들어 보면서
왜 변수하나만해도 복잡해 죽겠는데 상수..또 열거 상수 라고 하는 것 까지..???
Enumerating..
Enumerte what you are doing right now!!!
자네가 지금 하고 있는 것을 한번 나열해 보게!!!
List what you are doing right now!!!
Listing하라는 소리나.. 같은 소리다..나열하다 ..주욱 열거하다!!

또한 If ~ Else ~ End If 문보다 좀 편리한 것이 없을까???
Select Case 문을 사용하여 비교해 보자!!
어느 것이 편리한가는 스스로 판단해 보시기 바란다..
상황에 따라 틀려요??!! 그럼 어떤 상황에 따라서..틀리는지!!

또한 오브젝트라고 하는 것은 속성이라는 것을 갖고 있고
또 속성도 단순한 값을 넣고 빼고 하는 것이 있는 가 하면
또 다른 오브젝트를 만들어 주는 속성도 있다는 것을 어렴풋이 알겠다
그런데 이왕 나온것..하나더 이야기하자..
머리가 아직 깨질것 같지는 않을 실테니까..
본래 머리가 깨질것 같이 복잡해 지는 것은 마음이 급해서 그렇다
차근 차근 처음 부터 접근해 가면 되는데 마음이 급해서 그렇다..
take easy!!!man..!!

오브젝트라는 녀석이 무엇을 또 갖고 있느냐 하면..
메소드(Method)라는 것을 갖고 있다
일반적인 변수는 그냥 단순한 값을 갖고 있지만 오브젝트는 스스로
계산하고 일을 처리하는 행동할수 있는 속성..엄밀히 따지자면 어떤 특징은
모두 속성이라고 할 수 있다..
행동하는 속성은 메소드이고
상황을 나타내는 속성은 속성이다
뭐야...더 복잡하게 떠들잖아!!!
속성..Property라고 하는 것이 의미가 그렇다..
아무튼 복잡한 소리 치우고..
오브젝트는 속성와 메소드를 갖고 있다
그리고 메소드나 속성이나 오브젝트에게 일을 시키는 것은 똑같다
그냥 좀 편리하게 이럴때는 메소드를 사용하고 저럴때는 이런 속성을
사용하자!!!라고 만들어 놓은 것이다
엑셀자체를 만든 프로그래머들이 그렇게 프로그래밍해 놓은것이다
그럼 메소드는 뭐야???!!!
메소드가 뭐냐???가 아니고 메소드는 어떻게 사용하느냐??가 맞다
아래와 같은 표현식을 보자

Range("C3").BorderAround xlSolid, xlThick, xlColorIndexAutomatic

속성은 값을 하나씩 = 표시 붙여가면서 사용하지만
참..예외적으로 오브젝트를 만드는 속성은 =표시없이
변수(참..엄밀히 따지면 이럴때는 매개변수)를 전달하지!!

메소드는 값을 여러개도 한꺼번에 전달한다
물론 값을 하나도 안 받는 녀석도 있다
좀 편리한 녀석이다

속성은 딱딱 하나의 값을 전달 받는다!!!
그러나 메소드는 여러개의 값도 받고..하나도 안받기도 하고

일상에서 생각해 보라
누구에게 일을 시킬때 정보를 하나만 주고 일을 시킬때도 있고
하나도 정보를 주지 않고 일을 부탁할때도 있을 것이다
이렇게도 일을 시키고..저렇게도 일을 시키고...와 마찬가지로
오브젝트에 단순한 일을 시킬때는 속성..좀 복잡한 일을 시킬때는
메소드라고 쉽게 생각하셔도 좋을 것이다
현대의 프로그래밍은 어떻게 해서든지 사용자..즉 개발자..엑셀프로그래머등등이
사용하기 간단하고 편리하게 만들고 싶은 것이다
그래서 사용자가 간단하게 속성하나만 전달하면
복잡하고 어려운 일을 알아서 안보이는 곳에서 하려고 노력하는 것이
오브젝트지향적 프로그래밍인것이다

엑셀을 오브젝트지향적으로 만들어 놓은 것이고
이것을 VBA에서 자유스럽게 열어서 건딜수 있게 만들어서 제공하여
우리는 자유스럽게 엑셀의 오브젝트들에게 일을
시킬수 있게 되는 것이다
한마디로 이것을 못써먹는다면
줘도 못먹나??!@#! 소리를 듣게 되는 셈이다

엑셀이 제공하는 많은 열거상수중에서
색상을 제공하는 값은 열거 상수가 없다
왜 그랬을까???
색상을 줄때..ColorIndex속성값을 줄때
숫자를 준다
열거상수가 있다면 어느것이 빨강이고 어느것이 파랑인지
알텐데..왜 그랬는지 열거상수를 제공하지 않았다
없으면 만들어서 사용하면 된다

Enum myColor
    red = 3
    blue = 5
    yellow = 6
    white = 2
    black = 1
End Enum

이렇게 변수선언하듯이 선언하고 사용하면 되는 것이다


BrainTraining_065_6.



길을 놓치치 않고 잘 오고 계신지..
중간에 어정거리면 길을 놓친다
집을 지을때는 작은 집을 짓거나 큰집을 짓거나 사용하는 기술은
똑같다..
작은 셀하나에 색깔 칠하는 짓이 뭐 대수냐..싶어서 앞페이지쯤에서
지쳐버렸다면 아무것도 못한다..
이것을 주욱 가면서 엑셀이 제공하는 것은 이것 저것 섭렵할 것이니..
벨트단단히 메고 길을 놓치지 마시기 바란다

여기저기 기웃거리면 코드 동냥질 하지 말고
스스로 일이 있으면 뚝딱거리고 만들게 하고 싶은 것이 이 페이지와
새로 열게 된 UNO-WEEKLY의 목적이다
코드 찾아 삼만리..사람 곯는다
찾았다 해도 자신의 상황과 문제에 딱 맞아 떨어지는 코드는 없다
얻어온 코드 분석하는 시간에 스스로 기본을 빵빵하게 갖추는 것이 좋다
원칙을 알면 스스로 만든다
원칙을 숙달시키는데 지루함이 좀 있을 것이나..
원칙은 지루하고 답답한것이 원칙이다
그래서 이렇게 간간히 헷소리로 달래 면서 가고 있는 것이다
어휴..거 뭐..시간이 많이 걸려서..
어느 정도의 시간을 투자하면 남은 시간이 몇배로 확장 될 수 있다는
상상력들이 부족하여 언발에 쉬야 하듯이...몇시간..아니 몇일을 찾아 헤맨다
그 시간을 좀 모아서 스스로의 개발 능력으로 배양하면 효율적일텐데..
죽을때나 인생의 정확한 메뉴얼을 찾게 되시려나....
아무튼 나는 최선을 다 할 모양이니까..
님들도 최선을 다 하나..못하나의 문제만 남는다

그런데 UNO-WEEKLY는 뭐..이것 저것 중복되지 않나요??!#@
일종의 잡지다..좀 생각을 많이 하게 하는 주간잡지라고 생각하시면 된다
좋은 주간지..세상에 하나밖에 없는 희안한 주간지!!
최대한 유일한 주간지 만들듯이 가볍게 하려고 노력할것이다

일주일에 한번 씩 정기적으로 보면서..잊어 먹고 있는 생각들을
자극하고 싶은 것이니까..

아니 왜 그런데 이 페이지의 성격으로 보아서는 워크샵이나
UNO-XL-PROGRAMMING의 본페이지에서 하여야 할텐데
왜 BrainTraining코너에서 하시나???!!!
답은, 어떻게 하다가 보니까 그렇게 되었다!!!
뭐가 막 생각이 나서 그냥 주절주절 달다가 보니까..엉뚱한곳에
달아가고 있다..

아무튼 다음 페이지로 가자..