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

Excel & VBA---Brain Training




숙달된다고 하는 것..skilled up...은 기본을 익히고..
기본을 다양하게 활용하는 것이다
기본컨셉을 알고..안다고 하는 것은 숙달되는 것과는 전혀 다르다
하나의 순환문을 완벽히 이해했다
하나의 순환문을 그냥 눈감고도 두들길수 있다
그때 응용이 된다
순환속에서 또 순환을 벌리고 또 그안에서 또 돌리고
하나의 순환문을 이해하지 못하고 여러개의 중첩된 순환문을 딜다보고
머리를 쥐어뜯어 보았자 헛발질이다
앞페이지의 지극히 간단한 것을 숙달 시키시기 바란다
초보이고..앞으로 엑셀프로그래밍이 쓸만하다고 생각이 들면

앞페이지에서 아래의 표현식을 이해하였을 것이다

Range("C3").Cells(1,intNextCell) = Int(Rnd() * 10) + 1

Cells(3,3)
이말은 Cells라는 것은 행열방향으로 하나의 범위속의 셀들이 되는 것이고
여러개의 셀집단속의 행방향으로 3번째 열방행으로 3번째 셀에 접근하는 것이다
그러니..
Cells(변수하나, 또다른 변수하나)
면 변수를 다른 것을 줄때마다 다른 위치에 접근하게 될 것이다





3번째 버튼을 크릭하면 열과 행의 교차되는 하나의 셀에 값을 넣는다
이것은 순환울 하지 않은 상태에서 한것이다
이제 또 생각하여야 할 일이 있다
변수가 또 필요할까???!!!
또 필요할 것이다..
기능이 추가될때마다 변수가 필요하게 됨을 이해해야 한다
요리를 해도 ...메뉴가 달라질때마다 준비하는 그릇이 다르지 않은가??
요리할때 빈그릇을 옆에 많이두고들 한다..
이것이 하나의 변수라고 생각해도 좋을 것이다
임시 담아두는 그릇들..

이 씨리즈를 정성껏 읽고 실제로 해보고 하면서 느껴야 정상이다
아하..변수가 어려운 대상이 아니고
알고 이해하고 활용하여야 할 유용한 기능이구나!!!
아니..절대로 필요한 기능이구나..이것 없이는 프로그래밍은 불가능하구나?!!!

Dim intRow As Integer,intCol As Integer
intRow=Int(Rnd()*10)+5
intCol=Int(Rnd()*10)+5

intRow는 몇번째의 행이 만들어질지에 대한 정보를 담는 변수이고
intCol은 몇번째의 열이 만들어질지에 대한 정보를 담는 변수를 만들수 있겠다
그렇게 만들고 변수를 엑셀의 Cells속성에 아래와 같이 전달하면

Range.Cells(intRow,intCol)

매번 발생하는 난수에 의하여 intRow가 변하고 intCol의 값이 변하겠지
물론 이렇게 만들어도 된다..표현식에서 얻어진 결과가 한번만 사용된다면

Range.Cells(Int(Rnd()*10+5,Int(Rnd()*10+5)

라고 속성값을 직접 주어도 된다
그러나 한번만 사용하는 표현식의 값이라 할지라도
변수에 담아서 사용하는 습관이 좋다
그래야 코드의 가독성이 좋다..즉 쉽게 읽기 편한 코드가 유지되는 것이다

참..참고로 앞페이지에서 이야기 했지만 순환을 하지 않는다면
그냥 수식과 엑셀의 주어진 기능만으로도 이렇게 만들어 진다
화일을 열고 F9키를 반복눌러보시면 ..


BrainTraining_065_3.



BrainTraining_065_4.



순환문속에서 순환문을 돌려보자

Dim intRows As Integer
Dim intCols As Integer

Dim intX As Integer
Dim intY As Integer

intRows=Int(Rnd()*20)+5
intCols=Int(Rnd()*20)+5

For iX=1 To intRows
   For iY=1 To intCols

      Range("C3").Cells(iX,iY).Value= 전달하고 넣고 싶은 정보

   Next
Next

파랑색순환문이 한번 순환할때
빨강색순환문은 intCols 갯수만큼 돌아가는 것이다
그러니 하나의 행을 순환할때
그 행에서 intCols만큼의 열을 순환하는 것이 되는 것이다
재미있지 않은가???잠깐 중첩순환문은 여기에서 좀 뜸을 드리고..
기초를 더 다듬고 가자

아래와 같은 응용 문제도 풀어 보시기 바란다
이것은 위와 같이 두개의 중첩순환은 필요없고
하나의 순환문내에서 변수의 적절한 응용에서 이루어진다




위와 같이 숫자를 왼쪽으로 한칸씩 자리이동을 하는 것도
순환문에 변수를 적절히 사용하면 되는 것이다

뭐가 어떻게 움직인다는 소린지 모르겠다구?????
그럼 아래와 같이 색깔을 주면 알겠지!!!