엑셀 VBA에서 Insert 메서드는 셀, 행, 열, 시트, 워크북 등의 항목을 삽입할 때 사용됩니다.
즉, 특정 위치에 새로운 데이터나 구조를 추가할 수 있습니다.
1. 기본 문법
Range("셀 범위").Insert(Shift:=xlShiftDown 또는 xlShiftToRight, CopyOrigin:=xlFormatFromLeftOrAbove)
|
- Shift (선택 사항): 삽입된 셀로 인해 기존 셀이 이동하는 방향을 지정
- xlShiftDown → 아래로 이동
- xlShiftToRight → 오른쪽으로 이동
- CopyOrigin (선택 사항): 삽입된 셀의 서식을 어디에서 복사할지 지정
- xlFormatFromLeftOrAbove → 왼쪽 또는 위쪽 셀의 서식 유지
- xlFormatFromRightOrBelow → 오른쪽 또는 아래쪽 셀의 서식 유지
2. 셀 삽입
📌 기존 셀을 아래로 이동하여 새 셀 삽입
Sub 셀_아래로_이동_삽입()
Range("A1").Insert Shift:=xlShiftDown
End Sub
|
📌 A1에 새 셀을 삽입하고 기존 데이터를 아래로 이동
📌 기존 셀을 오른쪽으로 이동하여 새 셀 삽입
Sub 셀_오른쪽으로_이동_삽입()
Range("B2").Insert Shift:=xlShiftToRight
End Sub
|
📌 B2에 새 셀을 삽입하고 기존 데이터를 오른쪽으로 이동
3. 행 삽입
📌 특정 행 위에 새 행 삽입
Sub 행_삽입()
Rows(3).Insert Shift:=xlDown
End Sub
|
📌 3행을 위로 밀어내고 새로운 행 삽입
📌 연속된 여러 행 삽입
Sub 여러_행_삽입()
Rows("2:4").Insert Shift:=xlDown
End Sub
|
📌 2~4행을 위로 밀어내고 새 행 삽입
📌 사용된 마지막 행 위에 새 행 삽입
Sub 마지막_행_위에_삽입()
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row ' A열에서 마지막 사용된 행 찾기
Rows(lastRow).Insert Shift:=xlDown
End Sub
|
📌 A열의 마지막 사용된 행 바로 위에 새 행 삽입
4. 열 삽입
📌 특정 열 왼쪽에 새 열 삽입
Sub 열_삽입()
Columns(2).Insert Shift:=xlToRight
End Sub
|
📌 B열을 오른쪽으로 밀어내고 새로운 열 삽입
📌 여러 개의 열 삽입
Sub 여러_열_삽입()
Columns("B:D").Insert Shift:=xlToRight
End Sub
|
📌 B~D열을 오른쪽으로 이동하여 새 열 삽입
📌 마지막 사용된 열 오른쪽에 새 열 삽입
Sub 마지막_열_삽입()
Dim lastCol As Long
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column ' 1행에서 마지막 사용된 열 찾기
Columns(lastCol + 1).Insert Shift:=xlToRight
End Sub
|
📌 마지막 데이터가 있는 열의 오른쪽에 새 열 삽입
5. 삽입과 데이터 자동 정렬
📌 새 행을 삽입하고 데이터 정렬
Sub 행_삽입_정렬()
Rows(2).Insert Shift:=xlDown
Range("A1:A10").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo
End Sub
|
📌 2행에 새 행 삽입 후 A1:A10을 정렬
6. 복사하여 삽입
📌 A1:A5를 복사하여 A6에 삽입
Sub 복사하여_삽입()
Range("A1:A5").Copy
Range("A6").Insert Shift:=xlDown
End Sub
|
📌 A1:A5를 복사하여 A6에 삽입 (기존 데이터는 아래로 이동)
📌 B열을 복사하여 C열에 삽입
Sub 열_복사_삽입()
Columns("B").Copy
Columns("C").Insert Shift:=xlToRight
End Sub
|
📌 B열을 복사하여 C열에 삽입
📝 정리
기능
|
VBA 코드
|
셀 삽입 (아래로 이동)
|
Range("A1").Insert Shift:=xlShiftDown
|
셀 삽입 (오른쪽으로 이동)
|
Range("B2").Insert Shift:=xlShiftToRight
|
행 삽입
|
Rows(3).Insert Shift:=xlDown
|
여러 행 삽입
|
Rows("2:4").Insert Shift:=xlDown
|
마지막 행 위에 삽입
|
Rows(lastRow).Insert Shift:=xlDown
|
열 삽입
|
Columns(2).Insert Shift:=xlToRight
|
여러 열 삽입
|
Columns("B:D").Insert Shift:=xlToRight
|
마지막 열 오른쪽에 삽입
|
Columns(lastCol + 1).Insert Shift:=xlToRight
|
테이블에 행 삽입
|
tbl.ListRows.Add AlwaysInsert:=True
|
복사하여 삽입 (셀)
|
Range("A1:A5").Copy : Range("A6").Insert Shift:=xlDown
|
복사하여 삽입 (열)
|
Columns("B").Copy : Columns("C").Insert Shift:=xlToRight
|
🔥 VBA의 Insert를 활용하면 데이터를 효율적으로 추가하고 조작할 수 있습니다! 🚀