'반복문'에 해당하는 글 2건

본 강의에서는 Do Loop 반복문에 대해 알아보겠습니다.

 

1. Do While Loop 문

 

Do While Loop 문은 While 옆의 조건문이 거짓이 될 때까지 실행합니다.

Sub Macro()
      Dim row As Integer
      row = 1 
      Do While row < 11
            Cells(row,1).value = row
            row = row + 1
      Loop
End Sub

*반복문의 과정을 보기 위해 시간지연을 적용하였습니다.

위의 예제에서 변수 row의 값은 반복문이 실행될 때마다 값이 1씩 증가합니다.

반복문이 실행되며

Cells(1,1).value = 1

Cells(2,1).value = 2

Cells(3,1).value = 3

.

.

.

Cells(10,1).value = 10 까지 실행되고 row의 값이 11이 되어 조건문이 거짓이 되므로 반복문을 빠져나가게 됩니다.

 

참고로 조건문을 반복문의 위가 아닌 아래로 내릴 수도 있습니다.

Sub Macro()
      Dim row As Integer
      row = 1 
      Do 
            Cells(row,1).value = row
            row = row + 1
      Loop While row < 11
End Sub

*반복문의 과정을 보기 위해 시간지연을 적용하였습니다.

결과는 동일합니다.

 

그럼 조건문을 굳이 왜 아래로 내릴까요.

 

조건문을 아래로 내리게 되면 적어도 한번은 반복문 안에 있는 매크로를 실행시킬 수 있습니다.

Sub Macro()
      Dim row As Integer
      row = 5
      Do While row < 5
            Cells(row,1).value = row
            row = row + 1
      Loop
End Sub

조건문이 위에 있는 경우

위의 예제에서는 반복문 안쪽의 매크로를 실행하지 않습니다.

Sub Macro()
      Dim row As Integer
      row = 5
      Do 
            Cells(row,1).value = row
            row = row + 1
      Loop While row < 5
End Sub

조건문이 아래에 있는경우

그러나 위의 예제에서는 적어도 한번의 반복문을 실행하기 때문에 Cells(5,1)의 값이 5로 변하게 됩니다.

 

2. Do Until Loop 문

Sub Macro()
      Dim row As Integer
      row = 10
      Do Until row = 0
            Cells(11-row, 1).value = row
            row = row - 1
      Loop
End Sub

*반복문의 과정을 보기 위해 시간지연을 적용하였습니다.

이번에 row는 10부터 시작해 1씩 감소합니다.

Cells(1,1).value = 10

Cells(2,1).value = 9

Cells(3,1).value = 8

.

.

.
Cells(1,1).value = 1 까지 실행 후 row가 0이 되면 Until의 조건문이 참이 되므로 반복문을 빠져나오게 됩니다.

 

Do Until Loop 문도 Do While Loop 문 처럼 조건문을 아래로 내려서 사용이 가능합니다.

Sub Macro()
      Dim row As Integer
      row = 10
      Do
            Cells(11-row, 1).value = row
            row = row - 1
      Loop Until row = 0
End Sub

위의 예제도 반복문은 적어도 한번은 실행하게 됩니다.

 

이상으로 Do Loop 반복문 다루기를 마치겠습니다.


WRITTEN BY
컴공학도

,

본 강의에서는 vba뿐만 아니라 모든 프로그래밍 언어에서 기본적으로 사용하는 반복문에 대해서 알아보겠습니다.

 

1. For Next 문

Sub Macro()
      For i=1 To 10
            Cells(i,1).value = i
      Next i
End Sub

*반복문의 과정을 보기 위해 시간지연을 적용하였습니다.

변수 i는 1부터 시작하여 1씩 증가해 10을 넘을 때까지 반복합니다.

Cells(1,1)에는 1, Cells(2,1)에는 2 ..... Cells(10,1)에는 10이 들어가고 반복문이 끝나게 됩니다. 

 

 

추가로 Step을 이용하여 변수 i의 증가폭도 임의로 정할 수 있습니다.

Sub Macro()
      For i=1 To 20 Step 2
             Cells(i,1).value = i
      Next i
End Sub

*반복문의 과정을 보기 위해 시간지연을 적용하였습니다.

위의 예제에서는 i가 1부터 2씩 증가해 20을 넘기면 반복문이 종료하게 됩니다.

 

 

2. For Each Next 문

Sub Macro()
      Dim rng As Range
      Dim sum As Integer
      
      Set rng = Range("A1:A10")
      sum = 0
      For Each i In rng
            sum = sum + i.value
            Cells(12,1).value = sum
      Next i
End Sub

*반복문의 과정을 보기 위해 시간지연을 적용하였습니다.

For 문에서 사용된 변수 i에 rng의 구성요소 하나하나가 들어가게 됩니다.

첫번째 반복에서는 i = Range("A1")이 되고

두번째 반복에서는 i = Range("A2")이 되면서 rng의 마지막 구성요소인 Range("A10")에 도달할 때까지 반복문이 실행됩니다.

 

위의 예제 코드에서는 범위 A1:A10의 각 셀에 있는 숫자들을 반복문을 통해 모두 더한 것입니다.

 

For Each Next 구문에서 In 뒤에 오는 변수는 Range뿐만이 아닌 Array형식도 올 수 있습니다.


WRITTEN BY
컴공학도

,