본문 바로가기
엑셀 (Excel)

엑셀 매크로 VBA 시트 이동 복사 (맨 앞, 끝으로 시트 이동)

by ★√★ 2024. 6. 1.

안녕하세요, 이번 포스팅은 엑셀 매크로 VBA 시트 이동 복사 (맨 앞, 끝으로 시트 이동) 대해서 작성하도록 하겠습니다. 

 

엑셀을 이용하시면서 단순 업무를 하시는 경우가 많으실 텐데 이럴 때 매크로를 이용하면 정말 편합니다. 

 

그리고 매크로의 결과물에서 문서의  Cover Sheet를 원하는 위치에 놓고 싶을 때 유용하게 사용할 수 있는 매크로 코드를 알려 드릴게요. 

 

엑셀-매크로-VBA-시트-이동복사-썸네일
엑셀-매크로-VBA-시트-이동복사-썸네일

 

 

엑셀 시트 이동 매크로

 

1) 엑셀 시트 기본 구조

 

가장 먼저 설명드린 내용은 Sheet를 다룰 수 있는 기본 구조입니다. 

 

Sheet의 속성을 활용하기 위해서는 Worksheets의 구조를 이해해야 하는데 원하는 Sheet를 불러올 수 있는 기본 구문은 아래와 같습니다. 

 

Worksheets 기본 구조

✔ Worksheets("Sheet 이름")

예를 들어, Sheet 이름이 "정보" 라는 Sheet라면 [ Worksheets("Sheet 이름")] 라고 입력해서 사용을 하시면 됩니다. 

 

뿐만 아니라 해당 Sheet의 위치를 숫자인식해서 활용을 할 수 있는데, 가장 첫 번째 Sheet는 Worksheets(1)으로 됩니다. 

 

 

2) 엑셀 시트 이동 매크로 

 

그럼 위에서 설명 드린 기본 구조를 이용하여 이동하는 매크로 구문을 추가하여 시트를 추가하는 코드를 작성해 보도록 하겠습니다.

 

일단 기본 구조는 아래와 같습니다.

 

Worksheets 이동 기본 매크로

 

 특정 Sheet 이전 위치에 이동 (기준 Sheet의 왼쪽) : Worksheets(name).Move Before:= Worksheets(name) 

특정 Sheet 다음 위치에 이동 (기준 Sheet의 오른쪽) :  Worksheets(name).Move After:= Worksheets(name)

 

 

Sub 엑셀매크로_시트이동()

Worksheets("Sheet1").Move Before:=Worksheets("Sheet2")

Worksheets("Sheet1").Move After:=Worksheets("Sheet2")

End Sub

 

 

 위 예제 코드를 구성을 하게 되면 Sheet1이 Sheet2를 기준으로 오른쪽, 왼쪽으로 왔다 갔다 하는 것을 확인할 수 있습니다. 

 

엑셀-매크로-시트-이동

 

 

참고로 위에 코드에서 원하시는 것을 발췌해서 사용하시는 걸 추천 드립니다.

 

▶ 맥북 클램쉘 모드 설정 방법

 

 

엑셀 시트 맨 앞, 끝으로 이동 매크로

 

 

다음은 특정 엑셀 시트를 맨 앞이나 맨 끝으로 이동하는 매크로 구문을 설명드리도록 하겠습니다. 

 

저의 경우에는 엑셀을 정말 많이 사용하기 때문에 매크로 마무리 작업으로 해당 코드를 자주 사용하는 편입니다. 

 

1) 엑셀 시트 맨 앞으로 이동하는 매크로

 

: 일단 모든 Sheet는 각자의 위치 고유 번호를 부여받게 되는데 가장 앞에 있는 Sheet의 이름은 순번은 "1"입니다. 

 

해당 순번을 Sheet Name 대신에 입력하게 되면 맨 처음 시트를 인식하게 되고 해당 Sheet 앞에 이동하는 "Before:=" 코드를 이용을 하시면 특정 엑셀 시트를 맨 앞으로 이동을 시킬 수 있습니다.

 

자세한 코드는 아래와 같이 작성해 보았습니다.

 

Sub 엑셀매크로_시트_맨앞으로_코드 ()

	ActiveSheet.Move Before: = ActiveWorkbook.Sheets(1)
    
End Sub

 

 

2) 엑셀 시트 맨 뒤로 이동하는 매크로

 

: 다음은 특정 엑셀 시트를 맨 뒤로 이동하는 매크로입니다. 

 

위에서 설명드린 대로 맨 뒤에 있는 Sheet의 위치 정보를 이용하여 맨 뒤로 이동을 할 수 있습니다. 

 

맨 뒤에 있는 Sheet의 위치 정보는 해당 엑셀 파일에 있는 총 엑셀 시트의 숫자와 동일하다고 이해하시면 됩니다. 

 

그러므로, "Sheets.Count" 구문을 이용을 하시면 맨 뒤에 있는 Sheet 위치를 찾고, "After:=" 코드를 이용을 하시면 특정 엑셀 시트를 맨 뒤로 이동을 시킬 수 있습니다.

 

자세한 코드는 아래와 같이 작성해 보았습니다.

Sub 엑셀매크로_시트_맨뒤로_코드 ()

	ActiveSheet.Move After: = ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
    
End Sub

 

해당 코드를 구현을 하면 Sheet 이름을 기재하는 것보다 유동적으로 사용할 수 있으며, 숨겨져 있는 Sheet까지 감안해서 사용을 할 수 있습니다. 

 

▶ 엑셀 매크로 VBA Comments 속성 이용 메모 추가 수정 방법

 

 

엑셀 시트 복사 매크로

 

 

마지막으로 특정 시트를 원하는 위치에 복사하는 방법에 대해서 설명드리도록 하겠습니다.

 

위에서는 이동하는 목적이었기 때문에, " Worksheets(name). Move" 구문을 사용을 하였다면, 복사하는 구문이기 때문에 Move 대신 "Copy" 구문을 이용을 하시면 됩니다. 

 

예를 들어 Sheet2를 기준으로 왼쪽, 오른쪽에 시트 복사 시에는 아래와 같은 코드를 이용을 하시면 됩니다. 

 

Sub 엑셀매크로_시트복사()

Worksheets("Sheet1").Copy Before:=Worksheets("Sheet2")

Worksheets("Sheet1").Copy After:=Worksheets("Sheet2")

End Sub

 

 

위 예제 코드를 구성을 하게 되면 Sheet1이 Sheet2를 기준으로 오른쪽, 왼쪽으로 복사가 되는 것을 확인할 수 있습니다. 

 

엑셀-매크로-시트-복사

 

 

참고로 동일한 Sheet 이름으로 되지 않기 때문에 기본적으로 Sheet1(2) or 다른 이름으로 설정이 되어 복사가 되는 걸 확인하실 수 있습니다.

 

▶ 아이폰 데이터 느림 원인 해결 방법

 

 

관련 글

 

 

 

 

마치며

 

이상입니다. 지금까지 엑셀 매크로 VBA 시트 이동 복사 (맨 앞, 끝으로 시트 이동) 대해서 포스팅을 작성을 하였습니다. 

 

제 포스팅을 통해서 조금이나마 마무리 시트 작업하실 때 도움이 되셨으면 합니다. 

 

감사합니다. 

 

 

 

 

728x90

댓글