[엑셀 VBA 매크로] For 구문으로 엑셀 시트 이름 한번에 바꾸기 #1: Range(셀 주소) 버전
엑셀, VBA, 파워쿼리/VBA 매크로

[엑셀 VBA 매크로] For 구문으로 엑셀 시트 이름 한번에 바꾸기 #1: Range(셀 주소) 버전

by Jongg 2023. 10. 10.
728x90

'엑셀 매크로로 시트 생성하기'를 먼저 보시면 이해하는데 도움이 될 것입니다.

 

[엑셀 VBA 코딩] 엑셀 매크로로 시트 생성하기

이번 글에서는 엑셀 매크로로 시트를 생성하는 방법을 매크로 기록부터 시작해서 코딩하는 법까지 소개해 드리겠습니다. ① 시트 생성하는 매크로 기록해보기 ▼매크로 기록하는 방법 및 매크

writingpjt.tistory.com

이번 글에서는 시트 개수가 정해진 상황*에서, 여러 시트의 이름을 For 구문 매크로 중 Range(셀 주소) 버전으로 한 번에 바꿔보겠습니다. 

* 향후 시트 개수가 정해지지 않은 상황에서도 유연하게 작동하는 코드를 소개해 드리겠습니다. 

 

<예시 파일>

시트이름바꾸기(For구문 셀주소버전).xlsm
0.03MB

 

 

예시파일 생황 

▲예시 파일에는 위의 사진처럼 두 번째 시트에서 네 번째 시트까지 각각의 표가 있습니다. 그리고 첫 번째 시트에 목차 시트를 만들어서, 매크로로 각 시트의 이름을 '목차' 혹은 표 이름으로 바꾸고자 합니다

 

매크로 만들기

1) 첫 번째 시트에 목차 만들기

시트1에 우선 바꾸고 싶은 시트 이름을 연속적으로 기입합니다. 'No.' 나 시트명 같은 머리글 등 다른 부분은 작성할 필요가 없고, 드래그한 부분만 기입하셔도 됩니다. 예시 파일의 경우 'B4:B8' 범위에 변경할 시트 이름을 기입하였습니다.

 

2-2) For 구문 코드 짜기

본격적으로 For 구문을 짜기 전에, 'Range 객체'에 대해서 알아야 할 것이 두 가지 있습니다. 

첫째, Range는 말 그대로 범위를 의미합니다. 

둘째, Range("셀 주소")를 입력하면 셀 주소에 해당하는 범위를 선택합니다. 단, 텍스트로 셀 주소를 입력할 시 셀 주소는 큰 따옴표 안에 있어야 합니다. Range("A1")은 A1 셀을 의미하며, Range("A1:B2")는 A1:B2 범위를 의미합니다. \\

시트이름바꾸기(셀주소버전).txt
0.00MB

 

 

<코드 전문>

Sub 셀주소버전()

Dim i  As Integer

For i = 1 To 5  '예시 파일에서는 시트 개수가 5개로 정해졌으므로 1 to 5

ThisWorkbook.Sheets(i).Name = ThisWorkbook.Sheets(1).Range("B" & i + 3)  'Range("B"&1+3)은 'B4'셀 의미
   
Next i

End Sub

 

3) 구문 해석

 

① For 1 = 1 to 5

이번 예시 파일에는 시트의 개수가 5개로 정해져 있기 때문에 For i = 1 to 5로 작성한 것입니다. 

 

② ThisWorkBook.

'현재 파일의' 라는 뜻으로, 파일을 한 개만 열어놓고 매크로를 돌리는 경우에는 생략해도 무방합니다.

 

③ Sheets(i).Name

i 번째 시트(Sheets(i).)의 이름(Name)이라는 뜻입니다. 시트를 선택할 때는 Sheet이 아니라 'Sheets'로 코딩해야 한다는 점을 유의해야 합니다.

 

④ Sheets(1).Range("B" & i +3)

첫 번째 시트의(Sheets(1).)의 B열 i +3 행 셀의 값을 선택하는 명령어입니다. Sheets(1).Range("B" & i +3)로 구문을 짠 이유는 첫 번째 시트의 B4:B8 바꾸고자 하는 이름들이 기입되어 있기 때문입니다.

i+3행을 선택하는 이유B4부터 이름이 기입되어 있어서 i에 3을 더해줘야 올바른 행을 갖고 오기 때문입니다. 만약에 바꾸고자 하는 이름이 B1:B5 범위에 기입되어 있다면, Sheets(1).Range("B" & i )로 코딩하는 것이 옳습니다.

 

 

728x90

 

 

실행 결과

예시 파일 첫 번째 시트에서 '시트명 바꾸기 버튼'을 클릭한 결과, 위의 사진처럼 시트 이름이 한 번에 바뀝니다.

 


매크로 코딩에는 정답은 없습니다. 따라서, 시트명을 한 번에 바꿀 수 있는 For 구문도 다양하게 짤 수 있는데요. 향후 다른 버전의 For 구문을 소개하고, 더 나아가 시트 개수가 정해지지 않은 상황에서 유연하게 쓸 수 있는 코드도 소개해 드리겠습니다.

 

728x90

댓글