본문 바로가기
Excel/VBA 공부

얼렁뚱땅 엑셀 VBA] 순환문(For ~ Next / For Each ~ Next)

by excelnote2 2017. 5. 21.





For ~ Next문



프로시저 내에서 특정 명령을 반복하기 위해서 사용하는 구문. 




For 카운터 = 시작번호 to 끝번호 [Step 간격]


    '실행명령

[Exit For]

Next [카운터]




- 카운터는 별도 Step을 정해주지 않으면 1씩 증가



1
2
3
4
5
6
7
8
9
10
11
12
13
Sub 합계()
 
Dim Sum As Integer
Dim Counter As Integer
Sum = 1
 
For Counter = 1 to 10   ' Counter 1부터 10까지 For문 순환  
sum = sum + sum
Next Counter
 
MsgBox Sum
 
End Sub
cs







For Each ~ Next문


For~Next문과 비슷하지만 지정한 횟수를 반복하는게 아니라 컬렉션의 개체를 순환하거나 배열내 요소를 하나씩 순환하면서 명령 실행



Dim 개체변수 As 개체형식

For Each 개체변수 In 컬렉션

    '실행명령

[Exit For]

Next [개체변수]




1
2
3
4
5
6
7
8
9
10
Sub 시트이름()
Dim WS As Worksheet
 
For Each WS In Activeworkbook.Worksheets
    MsgBox WS.Name
 
Next WS
 
End Sub
 
cs



시트 이름을 알려주는 팝업창이 하나씩 나타난다. 

(시트가 3개라면 팝업창도 세번)







For Each ~ Next문을 이용해서 각각의 워크시트를 순환하면서 해당 시트의 데이터를 총괄 시트로 복사할 수 있다. 



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub 총괄계산()
 
Dim WS As Worksheet
Dim i As intger        
 
For Each WS In ThisWorkbook.Worksheets
 
    If WS.Name <> "총괄" Then
 
        Range("A" & i).Value = WS.Name
        Range("B" & i).Value = WS.Range("F20").Value
        '각 시트 F20에 있는 값을 총괄시트 B열에 저장
 
        i=i+1
 
    End If
 
Next
 
End Sub
 
cs


댓글