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

Looping Structure|Do~Loop|While|Until|Do|Loop|While|Until|For|Each|Next|In|
|Logical Expression|Collection|Mod|Exit Do|
|ActiveSheet|Rows|EntireRow|Range|Exit Sub|
|Interior|ColorIndex|

For~Next 순환구문에 이어
Do~Loop순환구문으로 VBA의 기본적 문법은 끝나게 된다

For~Next 순환구문은 정해진 횟수만큼 순환하지만
Do~Loop순환구문은 정해진 횟수없이 순환할때마다 어떤 조건을
분석(Logical Expression)하여 순환을 더 진행할것인가..중단할것인가를 결정한다
Do~Loop 순환구문은 아래와 같이 다양한 형식을 갖고 있으나
각자가 좋아하는 형식으로 작성을 해도 아무지장이 없다

Do
    ...
Loop

라고 작성하면 컴퓨터가 다운될때까지 순환한다
왜냐하면 어디에서 중단하라는 명령문이 없기때문이다
아래와 같이 중단을 위한 명령문이 들어가는 곳이 다양하다

Do
   ...
Loop While Logical Expression

Do
   ...
Loop Until Logical Expression

Do
   If Logical Expression Then Exit Do
Loop

Do While Logical Expression
    ...
Loop

Do Until Logical Expression
    ...
Loop

위와 같이 다양하게 있다.. 그러나 어느것이나 같은 목적으로 사용할수 있을것이다

어느것이나 입맛에 맞는것을 선택하여 사용하면 된다

아래의 버튼을 크릭하면 숫자와 알파벳이 섞인 문장이 만들어 진다
이 문장에서 숫자만 뽑아내고 싶을 경우도 있을것이다
이런 경우 각각의 문자를 순환하면서 문자를 검사하여
숫자만 뽑아내서 모으면 된다
순환문이 필수적인것이다





아래에 위의 다섯개의 순환브록문으로 원하는 작업을 작성해보자
어떤 형식을 사용하던 가능하다는것을 알수 있다


이번에는 암호를 어느 정도횟수까지만 입력가능하게 순환문으로
통제해보도록 하자


어떤 순환문형식을 선택하느냐가 문제가 아니라
논리식과 변수를 적절히 어느 곳에 위치하느냐의
응용력과 이해의 문제인것이다

For Each Object In Collection Object를 하나 더 해보자

위의 순환문들도 유용하지만 엑셀프로그래밍에 있어서
집합체를 구성하고 있는 각각의 요소오브젝트를 순환하는 작업도
중요하다
아래의 엑셀시트상에 각각의 행을 3개간격..혹은 4개 간격으로
어떤 작업을 하고 싶다고 할때
전체 범위에서 각각의 행(오브젝트)를 하나,하나 접근하여야 한다
이럴때 For Each Object In Collecion Object가 유용한것이다

ABCDEFGH
1
2
3
4
5
6
7
8
9
10
11
12
13
14

Sub colorEvery3Row()
Dim rngRow As Range, iX As Integer
Range("A1:A14").EntireRow.Interior.ColorIndex = xlNone
For Each rngRow In ActiveSheet.Rows
     If iX >= 15 Then Exit Sub
     If rngRow.Row Mod 3 = 0 Then
         rngRow.Interior.ColorIndex = 15
         iX = iX + 1
     End If
Next
End Sub

ActiveSheet.Rows
는 전체쉬트의 모든 행(여러개의 행으로 구성되었으니까..집합체오브젝트라고 한다)
그 집합체내의 하나하나의 행(Row)를 순환하면서
각각의 행을 만났을때
몇번째행인지 rngRow.Row 로 확인을 한후 MOD 연산자로서
확인한후(워크시트함수중 MOD함수를 기억하시는지..!!>
색을 칠할것인지 말것인지 결정하는 순환문이였다
VBA의 기본문법은 모두 완료하였으니 엑셀프로그래밍으로 진행되며
이때 집합체오브젝트(Collection Object)와 각각의 오브젝트가
계속 나오게 될것이다

do loop