루프는 명령을 여러 번 반복하므로 많은 시간을 절약할 수 있습니다.
Excel VBA에는 다음 유형의 루프가 있습니다.
다음 코드는 A열의 각 셀에 일련의 숫자를 삽입합니다(1부터 12까지).
Sub while_loop() Cells(1, 1) = 1 Cells(2, 1) = 2 Cells(3, 1) = 3 Cells(4, 1) = 4 Cells(5, 1) = 5 Cells(6, 1) = 6 Cells(7, 1) = 7 Cells(8, 1) = 8 Cells(9, 1) = 9 Cells(10, 1) = 10 Cells(11, 1) = 11 Cells(12, 1) = 12 End Sub
이 코드는 매우 반복적입니다 ...
단지 12개가 아닌 수백 개의 셀에 연속적인 숫자를 삽입해야 한다고 상상해 보십시오. 이제 루프가 왜 매우 유용한지 이해하게 되실 것입니다.
빈 사이클 While의 예를 들어보겠습니다.
Sub while_loop() While [상태] '지침 Wend End Sub
조건이 true인 한 루프의 명령문은 계속 실행됩니다(그러나 무한 루프를 생성하지 않도록 주의하십시오).
다음은 이전에 논의한 루핑 매크로로, While 루프로 변환되었습니다.
Sub while_loop() Dim num As Integer num = 1 '시작 번호(이 경우 줄 번호와 설정되는 값) While num <= 12 'num 변수가 12보다 작거나 같으면 명령이 실행됩니다. Cells(num, 1) = num '번호 매기기 num = num + 1 '루프가 통과할 때마다 숫자가 1씩 증가합니다. Wend End Sub
매크로에서 이 루프를 사용하면 12개가 아닌 400개의 테이프가 필요한 경우 12개를 400개로 바꾸면 됩니다.
While Wend(While 명령에 포함된 특정 조건이 true인 동안 실행)과 동일하게 작동하는 루프를 작성하는 또 다른 방법이 있습니다.
Sub do_while_loop() Do While [상태] '지침 Loop End Sub
다음 버전에서는 Do Loop 루프 끝에 조건을 작성할 수 있음을 보여줍니다. 이는 명령이 정확히 한 번 이상 실행된다는 의미입니다.
Sub do_while_loop() Do '지침 Loop While [상태] End Sub
조건이 충족되는 동안 반복하는 대신 While을 Until로 바꾸면 조건에 따라 루프를 종료할 수도 있습니다.
Sub do_while_loop() Do Until [상태] '지침 Loop End Sub
Sub for_loop() For i = 1 To 5 '지침 Next End Sub
For 루프는 여기서 5번 반복됩니다.
이 주기가 반복될 때마다 변수 i는 자동으로 1씩 증가합니다.
Sub for_loop() For i = 1 To 5 MsgBox i Next End Sub
다음 명령을 사용하면 For 루프를 조기에 종료할 수 있습니다.
Exit For 'For 루프 종료
이를 명확하게 보여주는 예를 고려해 보겠습니다.
Sub for_loop() Dim max_loops As Integer max_loops = Range("A1") '셀 A1에서는 반복 횟수 제한을 지정했습니다. For i = 1 To 7 '예상 사이클 수: 7 If i > max_loops Then '셀 A1이 비어 있거나 7보다 작은 숫자를 포함하는 경우 반복 횟수를 줄입니다. Exit For '이전 조건이 TRUE이면 루프 For...loop에서 종료됩니다. End If MsgBox i Next End Sub
기타 Exit 연산자:
Exit Do '루프 종료 Do Loop
Exit Sub '절차 종료
Exit Function '종료 기능