엑셀 VBA에서 End는 두 가지 의미로 사용됩니다.
- VBA 코드 실행을 종료하는 End 키워드
- 셀 범위를 찾을 때 사용하는 End 속성 (Range.End)
1. VBA 코드 종료 (End 키워드)
📌 코드 강제 종료
Sub 코드_강제_종료()
MsgBox "이 메시지가 보이고 나면 코드가 종료됩니다."
End ' 코드 실행 강제 종료
MsgBox "이 메시지는 표시되지 않습니다."
End Sub
|
📌 End를 실행하면 즉시 코드 실행이 중지되며, 이후의 코드가 실행되지 않음
📌 변수 값 초기화 후 종료
Sub 변수초기화_후_종료()
Dim i As Integer
i = 10
MsgBox "i의 값: " & i
End ' 코드 종료
i = 20 ' 실행되지 않음
End Sub
|
📌 End가 실행되면 모든 변수 값이 초기화됨 (메모리에서 제거됨)
2. 셀 범위 찾기 (Range.End 속성)
End 속성은 엑셀에서 Ctrl + 방향키를 누르는 것과 같은 동작을 수행합니다.
즉, 특정 셀에서 시작하여 데이터가 있는 마지막 셀을 찾거나 빈 셀을 찾는 데 사용됩니다.
📌 아래 방향으로 마지막 데이터가 있는 셀 찾기
Sub 마지막_행_찾기()
Dim lastRow As Long
lastRow = Range("A1").End(xlDown).Row ' A1에서 아래로 이동하여 마지막 데이터 행 찾기
MsgBox "마지막 데이터가 있는 행: " & lastRow
End Sub
|
📌 Range("A1").End(xlDown) → A1에서 아래 방향으로 이동하며 마지막 데이터가 있는 행 찾기
📌 xlDown → 아래 방향 (Ctrl + ↓)
📌 오른쪽 방향으로 마지막 데이터가 있는 셀 찾기
Sub 마지막_열_찾기()
Dim lastCol As Long
lastCol = Range("A1").End(xlToRight).Column ' A1에서 오른쪽으로 이동하여 마지막 데이터 열 찾기
MsgBox "마지막 데이터가 있는 열: " & lastCol
End Sub
|
📌 Range("A1").End(xlToRight) → A1에서 오른쪽 방향으로 이동하여 마지막 데이터가 있는 열 찾기
📌 xlToRight → 오른쪽 방향 (Ctrl + →)
📌 위쪽 방향으로 데이터가 있는 첫 번째 셀 찾기
Sub 첫번째_데이터_위로_찾기()
Dim firstRow As Long
firstRow = Range("A100").End(xlUp).Row ' A100에서 위로 이동하여 첫 번째 데이터 행 찾기
MsgBox "첫 번째 데이터가 있는 행: " & firstRow
End Sub
|
📌 Range("A100").End(xlUp) → A100에서 위 방향으로 이동하여 첫 번째 데이터 행 찾기
📌 xlUp → 위쪽 방향 (Ctrl + ↑)
📌 왼쪽 방향으로 데이터가 있는 첫 번째 셀 찾기
Sub 첫번째_데이터_왼쪽_찾기()
Dim firstCol As Long
firstCol = Range("Z1").End(xlToLeft).Column ' Z1에서 왼쪽으로 이동하여 첫 번째 데이터 열 찾기
MsgBox "첫 번째 데이터가 있는 열: " & firstCol
End Sub
|
📌 Range("Z1").End(xlToLeft) → Z1에서 왼쪽 방향으로 이동하여 첫 번째 데이터 열 찾기
📌 xlToLeft → 왼쪽 방향 (Ctrl + ←)
3. End 속성과 Cells를 조합하여 동적 범위 찾기
📌 데이터가 있는 마지막 행 전체 선택
Sub 마지막_행_전체_선택()
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row ' A열의 마지막 데이터 행 찾기
Range("A" & lastRow).EntireRow.Select ' 해당 행 전체 선택
End Sub
|
📌 Cells(Rows.Count, 1).End(xlUp).Row → A열에서 마지막 데이터가 있는 행 찾기
📌 데이터가 있는 마지막 열 전체 선택
Sub 마지막_열_전체_선택()
Dim lastCol As Long
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column ' 1행의 마지막 데이터 열 찾기
Columns(lastCol).Select ' 해당 열 전체 선택
End Sub
|
📌 Cells(1, Columns.Count).End(xlToLeft).Column → 1행에서 마지막 데이터가 있는 열 찾기
📌 데이터가 있는 마지막 셀 범위 선택
Sub 마지막_셀_범위_선택()
Dim lastRow As Long, lastCol As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
Range("A1", Cells(lastRow, lastCol)).Select
End Sub
|
📌 A1에서 시작하여 데이터가 있는 마지막 행과 마지막 열까지의 범위를 자동으로 선택
4. 데이터 삽입을 위한 End 활용
📌 마지막 행 아래에 새 데이터 추가
Sub 마지막_행_아래_데이터추가()
Dim lastRow As Long
lastRow = Range("A1").End(xlDown).Row + 1 ' 마지막 행 다음 행 찾기
Range("A" & lastRow).Value = "새로운 데이터"
End Sub
|
📌 A열의 마지막 데이터 아래에 "새로운 데이터" 입력
📌 마지막 열 오른쪽에 새 데이터 추가
Sub 마지막_열_오른쪽_데이터추가()
Dim lastCol As Long
lastCol = Range("A1").End(xlToRight).Column + 1 ' 마지막 열 다음 열 찾기
Cells(1, lastCol).Value = "새로운 데이터"
End Sub
|
📌 마지막 데이터가 있는 열의 오른쪽에 "새로운 데이터" 입력
📝 정리
기능
|
VBA 코드
|
코드 강제 종료
|
End
|
아래 방향으로 마지막 데이터가 있는 행 찾기
|
Range("A1").End(xlDown).Row
|
오른쪽 방향으로 마지막 데이터가 있는 열 찾기
|
Range("A1").End(xlToRight).Column
|
위쪽 방향으로 첫 번째 데이터 찾기
|
Range("A100").End(xlUp).Row
|
왼쪽 방향으로 첫 번째 데이터 찾기
|
Range("Z1").End(xlToLeft).Column
|
마지막 행 전체 선택
|
Range("A" & lastRow).EntireRow.Select
|
마지막 열 전체 선택
|
Columns(lastCol).Select
|
데이터가 있는 마지막 범위 선택
|
Range("A1", Cells(lastRow, lastCol)).Select
|
마지막 행 아래 새 데이터 입력
|
Range("A" & lastRow).Value = "새로운 데이터"
|
마지막 열 오른쪽에 새 데이터 입력
|
Cells(1, lastCol).Value = "새로운 데이터"
|
🔥 VBA의 End 키워드와 End 속성을 활용하면 자동화된 데이터 조작과 빠른 탐색이 가능합니다! 🚀