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

Excel & VBA---Brain Training




초보님들의 수준으로서 생각을 해보면서 작성하면

Dim iValue As Integer iValue = Int(Rnd() * 9) + 1 If iValue <= 3 And iValue >= 1 Then Range("D23").Value = iValue Range("D23").Interior.ColorIndex = 3 Range("D23").Font.ColorIndex = 2 ElseIf iValue <= 7 And iValue >= 4 Then Range("D23").Value = iValue Range("D23").Interior.ColorIndex = 5 Range("D23").Font.ColorIndex = 2 Else Range("D23").Value = iValue Range("D23").Interior.ColorIndex = 6 Range("D23").Font.ColorIndex = 1 End If

Range("D23")이라는 오브젝트..셀주소가 D23인 위치의 셀을
프로그래밍적으로 이해하고 접근하는 것이
Range오브젝트이고 Range("D23")이면 D23의 위치에 접근하는 것이다
그런데 그냥 이 오브젝트에 값을 전달하는 것이 아니고
오브젝트는 다양한 형태의 값을 갖는 주머니를 갖고 있다고 했었다
Value라는 속성이 여러분이 값을 주는 것을 받아서 챙기고 있는 것이다
또한 이 Range오브젝트는 Value라는 주머니에 값만 그냥 무심히
받아 챙기는 것이 아니고
값이 들어 오는 순간 자기의 일을 한다
어..값이 들어왔군..그럼 표현을 해야지!#@그리고 우리가 알 필요없는
워크시트상의 자기의 위치에 Value라는 속성이 갖고 있는 값을
표현하는 작업을 하는 것이다

그런데 위의 VBA표현은 중복되는 구문이 많다는 것을 느낄것이다
위의 것을 간단하게 표현할수 없을까???
이때도 변수가 필요하게 된다
상황에 따라서 임시적으로 값을 바꾸는 변수!!!
그래서 변수인것이다..
상황에 따라서 값이 바뀌는 것!!!

야생 버라이어티 쑈..1박2일..!!수시로 떠드는 버라이어티쑈!!
버라이어티도 이 변수(Variable)의 파생어인것이다..변화무쌍!!
위에서 보면 바탕색과 문자색이 상황에 따라서 달라진다
어떤 상황의 변화에 따라서 달라지냐면 발생한 난수의 값에 따라서 변한다
그럼 아래와 같이 변수를 사용하면 좀 쎄련된 표현이 되는 것이다

Sub coloringOnRandomNumber2() Dim iValue As Integer Dim iFontColor As Integer Dim iBackColor As Integer iValue = Int(Rnd() * 9) + 1 If iValue <= 3 And iValue >= 1 Then iFontColor = 2 iBackColor = 3 ElseIf iValue <= 7 And iValue >= 4 Then iFontColor = 2 iBackColor = 5 Else iFontColor = 1 iBackColor = 6 End If Range("D23").Value = iValue Range("D23").Font.ColorIndex = iFontColor Range("D23").Interior.ColorIndex = iBackColor End Sub

좀 나아졌다..
바탕색을 담는 변수 iBackColor변수를 만들고,
문자색을 담는 변수 iFontColor변수를 만들고
이곳에 값을 담아서
Range("D23")은 한번만 접근한다

실은 한번만 접근하는 것이 아니고 3번 접근(호출)했다
이것을 다시 쎄련되게 바꿔보자

With Range("D23") .Value = iValue .Font.ColorIndex = iFontColor .Interior.ColorIndex = iBackColor End With

위와 같이 하면 Range("D23")을 3번 호출하지 않고
한번 호출한 상태에서 각각의 속성값을 전달하게 되는 것이니 효율적으로
되는 것이다
물론 워낙 빠르게 움직이는 것이라서 느낄수 없는 것이지만
아무튼 코딩하는데 한자라도 덜치면 경제적이고 효율적이고
보면 가독성도 좋아지는 것이다
VBA구문을 자유자재로 숙달시키고
엑셀의 오브젝트가 어디에 존재하는지 어떻게 접근하는지를 알아가는것이
이곳이니..계속 분발하시기를!!!
우노영어에서 소개하는 Aj.hoge의 EffortLess Ensligh의 영어습득방법중의 하나가
같은 단어나 숙어라도 상황을 바꾸어서 반복해야 숙달이 된다는 원칙이 있듯이
UNO-EXCEL-Programming에서 기본문법이 나오지만 이곳에서 또 떠드는 것은
그런 상황을 바꾸어서 또 떠들어대는 것도 그런 숙달의 원칙을 지키는 것이니
또 한번 도전하는 기회들이 되시기 바란다

계속된다..



BrainTraining_065_1.



엑셀프로그래밍은 영어를 생활화하는데 도움이 된다
자판 부터 영문 자판을 길들여야 하니까...
예를 들어서..
이왕이면 Range오브젝트라고 하는 Range라는 단어를 잘 째려 보시면..
Range가 도대체 뭔데..이런 이름을 셀에 붙였을까???
그냥 셀, Cell 이라고 하지!!???
Range는 어디서 어디까지라는 범위를 말하는 단어다
태백산맥..에서 산맥이라고 함..Mountain Range가 된다
산 하나만 찍어서 말하는 것이 아니고 어디서 어디까지라는 범위를 말한다
Time Range라고 하면 언제 부터 언제까지라는 소리다
wide range라고 하면 광범위한 것이고..
extend your range of ability라고 한다면
당신의 능력의 범위를 키워라!!가 될것이고
그러니 딱 하나의 셀은 Cell이라는 것으로도 표현된다
여러개의 셀들은 Cells라고 표현되고
이것도 결국은 Range오브젝트를 만들어 주는 표현들 이다
Range오브젝트는 엑셀에만 나오는 것이 아니다
MS 워드에서도 문장의 어느 시작문자에서 끝나는 문자까지도
Range오브젝트로 접근하고 가공하고 처리한다
기본적으로 Range오브젝트!!!
그냥 자꾸 나오니까..귀에 익히고 자판을 두들겨 보시면 된다
범위..여기에서 저기까지..이셀에서 저셀까지..
Range("A1:D1") 이라고 하면 Range("A1") 에서 Range("D1")까지가 되는 것이다
직접실행창에
Range("A1:D1")="XXX"
라고 입력하고 엔터키를 쳐보시면 현재 활성화된 시트(Active Sheet)의
어느 범위(Range)에 값이 들어갔는지를 확인해 보시면 알것이다
Range!!Range!!여러분의 시트상의 하나의 셀도 Range이고
Sheet전체의 셀도 Range오브젝트이다

엑셀은 많은 종류의 오브젝트가 레고 브록조립되듯이 조립되어있는 것으로
아시면 좋다
각각의 오브젝트는 값을 받아들이는 속성이라는 것이 있는가 하면..
값을 넣을수(Write)는 없고..얻어낼수(Read)만 있는 속성들을 갖고 있기도하다
Range("A1:G10").Count
라고 하면 Range("A1:G10")이라는 범위가 몇개의 셀로 이루어졌는지
알수 있는 정보를 우리에게 준다
만약
Range("A1:G10").Count=5
이라고 정보를 전달하면 에러가 날것이다
Count속성은 읽을수만 있지 값을 사용자가 쓸수는 없다는 에러인것이다!!
아니 이런 Count속성에 무엇에 써먹지???!!

Count는 숫자를 세는 것이고 Range오브젝트가 몇개의 셀로 구성되는 것인지
안다면 다음 작업을 위하여 편리한 것들이 많을 것이다

이제 하나의 셀에 값을 넣을줄도 알고
하나의 셀의 속성값을 주어서 모양을 바꾸기도 하는 것을 알았다
조건문이라는 것을 통하여 이럴때는 이런색..저럴때는 저런색을 넣었다

이제 문제의 마지막 단계..
하나의 셀을 처리하는 것은 되었다
위의 두개는 VBA없이 엑셀시트에서 수식과 조건부서식등을 통하여
얼마던지 할수 있다

그러나..VBA없이는 못하는 것이 다음 단계다
바로 순환문이라는 구조다
옵션의 계산탭에서 계산의 순환체크를 하는 것이 있기는 있지만
이것은 특수한 경우의 순환식을 발생하기 위한 것이지 우리가 하고자
하는 목적과는 별 관계없는 물건이다

순환문..위에서 하나의 셀을 처리한 것을 똑같이 몇개를 처리하던
처리할수 있는 능력이 순환문이고
컴퓨터의 꽃이 순환문이다
조건문과 순환문이 쌍을 이루지만
조건문은 워크시트의 수식에서도 몇가지 함수를 뚝딱거려서 간단한것은 간단히 처리한다
대개가 워크시트상의 문제에서 처리하지 못하고 쩔쩔매고..고수를 찾아서
헤메다가 오는 질문은 모두가 순환문때문이라고 해도 과언이 아닌다

저어기요...!@#@
이것이 될라는지 모르겠는데
VLOOKUP함수는 유일한 값이 하나만 있어야 한다고 하는 데
똑같은 값이 몇개 되거등요..
이것을 처리하고 싶은데

모두 순환문이라는 컨셉을 알지 못해서 우물안 개구리가 되는 것이다
순환문을 모르면 컴퓨터를 컴퓨터같이 써먹지 못하고
기계가 하는 일을 사람이 뼈빠지게 하는 셈이 되는 것이다
기계가 할일을 사람이 하고 있으면..스스로 창의적인 인간이기를 포기하고
기계로 살고 싶은 것이다
기계같이 일하면서 살면서 사람대접받으려고 하면 문제다!!!

별것도 아닌데 도전하기를 싫어한다
다음 페이지에서 보자