TOP

VBA-수업 8.1. 루프(Loops)

루프는 명령을 여러 번 반복하므로 많은 시간을 절약할 수 있습니다.

Excel VBA에는 다음 유형의 루프가 있습니다.

  • While ... Wend
  • Do ... Loop
  • For ... To ... Next

  • 다음 코드는 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 ... WEND

    빈 사이클 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개로 바꾸면 됩니다.

    DO ... LOOP

    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
    

    FOR ... TO ... NEXT

    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
    

    조기 루프 종료(Exit)

    다음 명령을 사용하면 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 '종료 기능
    

    LO Calc의 YLC Utilities 메뉴

    LO Calc의 YLC Utilities 메뉴

    Excel의 YLC Utilities 메뉴

    Excel의 YLC Utilities 메뉴