표를 자주 사용하지 않다 보니
표에서 행을 복사한 후 마우스 오른쪽 버튼을 누르고 '복사한 셀 삽입' 메뉴를 누르면
'워크시트의 표에 있는 셀이 이동될 수 있기 때문에 이 작업은 수행되지 않습니다.'란 메시지가 나오고 복사한 행 삽입이 안된다는 것을 최근에 알았습니다.
확인을 눌러 창을 닫습니다.
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. 매크로 저장 위치를 '현재 통합 문서'로 복원
개발도구 매크로 기록을 누른 후 매크로 저장 위치를 '현재 통합 문서'로 변경하고 확인 버튼을 누른 후 바로 개발 도구 - 기록 중지 명령을 누르면 됩니다.
'EXCEL - VBA' 카테고리의 다른 글
범위를 지정하는 방법(1) - Application.InputBox (0) | 2025.02.20 |
---|---|
지정된 색이 포함된 행을 위로 올리기 (0) | 2025.02.19 |
알PDF에서 페이지별로 시트를 나눌 수밖에 없는 이유 (2) | 2025.01.27 |
셀 값이 바뀔 때 처리(Worksheet_Change) (0) | 2024.08.29 |
주소를 PNU로 변환하기(2) - VBA (0) | 2024.08.19 |