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 - On Error GoTo 문으로 함수 실행중 오류 처리 하기 ▶ 엑셀 VBA On Error GoTo 반복문에서 에러 거르기 ▶ 엑셀 VBA Application.GoTo 함수로 시트에 커서 강제 이동시키기 ▶ 엑셀 VBA 셀 영역 선택하는 여러가지 방법 ▶ 엑셀 VBA 반복문 Do While 사용하기 |
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 워크시트, 셀 선택되었을 때 실행되는 이벤트 함수 구현하기 (1) | 2024.04.13 |
---|---|
엑셀 VBA 시트 더블클릭 이벤트로 셀에 배경색 변경하기 (2) | 2024.04.11 |
엑셀 VBA 입력된 값 형식 확인 Information 관련 함수 모음 (0) | 2024.04.02 |
엑셀 VBA 날짜 함수 CDate 문자열을 날짜로 변환 (0) | 2024.03.28 |
엑셀 VBA Function 와 Sub 프로시저의 차이점과 사용법 알아 보기 (1) | 2024.03.16 |
엑셀 VBA 모듈(Module) 소스 파일 관리하기 (1) | 2024.03.05 |
엑셀 VBA 동일한 글자색 셀 개수 구하기 (9) | 2024.03.02 |
엑셀 VBA 이미지 셀 영역에 맞춰서 넣기, ShapeRange 함수 이용 (2) | 2024.02.28 |