EXCEL - VBA

표에서는 '복사한 셀 삽입'이 안되네요...

별동산 2025. 2. 18. 08:43
반응형

표에 행 삽입.xlsx
0.01MB

 
 
표를 자주 사용하지 않다 보니
표에서 행을 복사한 후 마우스 오른쪽 버튼을 누르고 '복사한 셀 삽입' 메뉴를 누르면

 
'워크시트의 표에 있는 셀이 이동될 수 있기 때문에 이 작업은 수행되지 않습니다.'란 메시지가 나오고 복사한 행 삽입이 안된다는 것을 최근에 알았습니다.

 
확인을 눌러 창을 닫습니다.
 

1. 해결의 실마리

 
5행을 선택하고 마우스 오른쪽 버튼을 누르고 삽입 메뉴를 눌러

 
빈 행을 삽입한 후

 
4행을 복사한 후 5행에 붙여 넣으면 문제없이 잘 됩니다.

 
결론은 같은데 왜 막는지 모르겠네요.
 

2. '매크로 기록' 이용 구현

매크로를 직접 작성할 수도 있지만,
개발도구 - '매크로 기록'을 누르고,

 
'매크로 저장 위치'를 '개인용 매크로 통합 문서'로 지정한 다음

 
행 삽입 - 위 행을 복사한 후 아래 행에 '복사한 셀 삽입'이 아니라 붙여넣기를 하면 됩니다.

 
그리고, 개발도구에서 '기록 중지'를 누르고,

 
개발도구 - Visual Basic을 누르면 기록된 매크로의 내용을 확인할 수 있습니다.

 
매크로의 위치는 PERSONAL.XLSB의 모듈 아래 Module2에 있습니다.

기존에 Module1과 Module11이 있어서 Module2에 기록된 것입니다.
 

3. 기록된 매크로 내용

Sub 매크로1()
'
' 매크로1 매크로
'

'
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Rows("4:4").Select
    Selection.Copy
    Rows("5:5").Select
    Application.CutCopyMode = False
End Sub

 
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove : 선택 행을 삽입하는데 '아래로 밀기'를 합니다. 
 
CopyOrigin:=xlFormatFromLeftOrAbove은 복사의 원천을 왼쪽 또는 위의 형식으로 한다는 것입니다.

 
Rows("4:4").Select : 4행을 선택
 
Selection.Copy : 선택된 셀, 여기서는 4행 복사
 
Rows("5:5").Select : 5행 선택
 
ActiveSheet.Paste : 붙여넣기 실행. ActiveCell이 아니라 ActiveSheet인 점을 주의해야 합니다.
 

4. 매크로 개선

위 매크로는 항상 선택된 행에 빈 줄을 삽입한 다음 4행을 복사해서 5행에 붙여넣기 때문에
아래와 같이 7행을 선택한 상태에서도 7행에 빈 행만 삽입되고 복사가 안됩니다.


 따라서 아래와 같이 코드를 수정합니다.

Sub 매크로1()
'
' 매크로1 매크로
'

'
    Rows(ActiveCell.Row).Insert shift:=xlDown
    Rows(ActiveCell.Row - 1).Copy Rows(ActiveCell.Row)
End Sub

 
Rows(ActiveCell.Row).Insert shift:=xlDown : 현재 행에 빈 셀을 삽입하는데 아래로 밉니다.
 
Rows(ActiveCell.Row - 1).Copy Rows(ActiveCell.Row) : 현재 행의 위 행(- 1)을 복사한 후 현재 행에 붙여 넣습니다.

Copy 다음의 Rows(ActiveCell.Row)가 붙여 넣을 위치를 지정하는 것으로, 현재 셀(ActiveCell)의 행 수(Row)를 포함하는 행(Rows)이니 현재 행이 됩니다.
 
매우 간단해졌죠?

 

현재 행을 복사하려면 ActiveCell.Row - 1을 ActiveCell.Row + 1로 수정하면 됩니다.
 
그리고, 매크로명을 알기 쉽게 '표에_행삽입'으로 수정합니다.
 

5. 바로 가기 키 설정

개발도구 - 매크로를 누른 다음 목록에서  'PERSONAL.XLSB!표에_행삽입'을 선택하고, 오른쪽의 옵션 버튼을 누릅니다.

 
매크로 옵션 창이 열리는데 바로 가기 키 아래에 Ctrl + 하고 빈칸이 있는데

 
Ctrl과 한 글자로 하면 기존 바로 가기 키와 겹칠 가능성이 높으므로

Shift 키를 누른 상태에서 i키를 눌러
Ctrl + Shift + i로 지정하고, 확인 버튼을 누릅니다.

 
그러면 위 매크로 목록 창이 표시되는데, 취소 버튼을 누릅니다.
 

6. 매크로 실행

A8셀에 커서를 놓고, Ctrl + Shift + i 키를 누르면
위 행인 7행이 8행에 복사되고, A10셀에 커서를 두고 Ctrl + Shift + i 키를 누르면 위 행인 9행의 내용이 10행에 복사됩니다.

 
 

7. 개인용 매크로 통합 문서 저장

엑셀을 닫을 때 "개인용 매크로 통합문서의 변경 내용을 저장할 것인지" 물어보므로 저장 버튼을 눌러야 합니다.

 
개인용 매크로 통합 문서에 자주 사용하는 매크로를 모아 놓으면 나중에 편리하게 사용할 수 있습니다.
 

8. 매크로 저장 위치를 '현재 통합 문서'로 복원

개발도구 매크로 기록을 누른 후 매크로 저장 위치를 '현재 통합 문서'로 변경하고 확인 버튼을 누른 후 바로 개발 도구 - 기록 중지 명령을 누르면 됩니다.
 

반응형