Please Enable JavaScript!
Gon[ Enable JavaScript ]

엑셀 VBA GoTo 문 이용해서 줄로 분기하기

엑셀(Excel)/VBA
반응형

GoTo 문은 프로시저에서 지정한 레이블로 점프해서 이동하게 해 주는 명령어입니다. 보통 특정 조건이 되었을 때 사용자가 지정한 줄로 바로 이동할 때 많이 사용합니다. 하지만 코드를 읽고 유지하기 위한 가독성이 떨어집니다. 코드가 조금만 복잡해지면 GoTo 문 때문에 로직이 꼬이기 때문에 자주 사용하지 마세요. 다른 현대적인 개발 언어들에는 이런 GoTo 문이 없습니다.

 

GoTo 문을 사용하기 위하 If 문을 이용했습니다. number = 1 이면 GoTo 를 이용해서 Line1 레이블이 붙은 라인으로 이동하게 했습니다. 그 외에는 Line2 로 이동합니다. 

' GOTO 문으로 해당 레이블로 이동한다.
 If number = 1 Then
    GoTo Line1
 Else
     GoTo Line2
 End If

 

Line1 Line2 레이블에서는 출력할 문자열을 str 변수에 저장합니다. 그리고 마지막에 LastLine: 에서 str 변수에 저장한 문자열을 출력합니다. 

Line1:
    str = "Number equals 1"
    GoTo LastLine
   
Line2:
    str = "Number equals 2"
 
' 마지막에 실행되는 창
LastLine:
    Debug.Print str

 

전체 소스는 다음과 같습니다. number = 1 이므로 GoTo Line1 가 실행되고 마지막 LastLine: 레이블로 가서 str 에 저장된 "Number equals 1" 을 출력합니다. 주의할 것은 레이블이 붙어도 코드는 순서대로 실행된다는 것입니다. 예를 들어 Line1: 레이블에 GoTo LastLine 이 없다고 합시다. 그럼 어떻게 출력이 될까요? Line2: 레이블을 건너뛰지 못하고 str "Number equals 2"을 덮어 씁니다. 출력 결과는 이전과 달리 저장된 "Number equals 2" 가 됩니다. 

Sub GoToFunction()
    Dim number As Integer
    Dim str As String
   
    number = 1
   
    ' GOTO 문으로 해당 레이블로 이동한다.
    If number = 1 Then
        GoTo Line1
    Else
        GoTo Line2
    End If
        
Line1:
    str = "Number equals 1"
    GoTo LastLine
   
Line2:
    str = "Number equals 2"
 
' 마지막에 실행되는 창
LastLine:
    Debug.Print str
 
End Sub

 

그림에 아래 코드가 실행되는 순서를 표시했습니다.

엑셀 VBA GoTo 문 이용해서 줄로 분기하기

아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※
엑셀 VBA - On Error GoTo 문으로 함수 실행중 오류 처리 하기
엑셀 VBA On Error GoTo 반복문에서 에러 거르기
엑셀 VBA Application.GoTo 함수로 시트에 커서 강제 이동시키기
엑셀 VBA 영역 선택하는 여러가지 방법
셀 VBA 반복문 Do While 사용하기
반응형
Posted by 녹두장군

댓글을 달아 주세요