[VBA 매크로] 원하는 이름으로 엑셀시트 생성하기 [Cells(행,열) 버전]
엑셀, VBA, 파워쿼리/VBA 매크로

[VBA 매크로] 원하는 이름으로 엑셀시트 생성하기 [Cells(행,열) 버전]

by Jongg 2023. 10. 10.
728x90

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

 

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

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

writingpjt.tistory.com

이번 글에서는 설정한 이름으로 시트를 만드는 For 구문 매크로를 소개해드리겠습니다.  

 

시트생성및이름설정 매크로.xlsm
0.02MB

 

 

예시파일 생황 

 

▲예시 파일에는 현재 시트가 하나밖에 없습니다. 그리고 B4:B8 영역에 있는 값 Test1~Test5을 이름으로 가진 시트들을 생성하고자 합니다.

 

매크로 만들기

1) For 구문 코드 짜기

<코드 전문>

Sub 시트생성및이름설정()

Dim i As Integer
   Sheets(1).Activate
   For i = 1 To 5   
        Sheets.Add after:=ActiveSheet  시트 생성 부분
        ActiveSheet.Name = Sheets(1).Cells(i + 3, 2)  ◀ 시트 명 설정 부분
   Next i

End Sub

 

2) 구문 해석

① Sheets(1).Activate

첫 번째 시트('Sheets(1)')를 선택(.Activate)하는 명령어입니다.

 

 For 1 = 1 to 5

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

 

 Sheets.Add after:= ActiveSheet 

현재 선택된 시트의 오른쪽에(after:= ActivateSheet) 시트를 생성(Sheets.Add)하라는 의미입니다. 

이전 글에서 소개한 코드를 참고해주세요. ([엑셀 VBA 코딩] 엑셀 매크로로 시트 생성하기)

 

④ ActiveSheet.Name

'Sheets.Add after:= ActiveSheet' 구문 뒤에 있는 ActiveSheet은 새로 생성된 시트를 의미합니다. 

▲시트를 새로 생성할 때 아래의 + 버튼을 클릭하면 자동적으로 새로 생성된 시트가 선택되는 것을 떠올리시면 됩니다. 

즉, 위의 구문의 'ActiveSheet.Name ='은 Sheets.Add after:= ActiveSheet으로 코드로 인해 생성된 새로운 시트의 이름을 설정하는 코드입니다.

이전 글에서 소개한 코드를 참고하면 이해하는데 도움이 될 겁니다.
(
[엑셀 VBA 매크로] For 구문으로 엑셀 시트 이름 한 번에 바꾸기 #1: Range(셀 주소) 버전)

 

⑤ Sheets(1).Cells(i +3, 2)

첫 번째 시트의(Sheets(1).)의 i +3 행 2열에 있는 셀('Cells(i+3, 2)')의 값을 선택하는 명령어입니다. Range(셀 주소)에서는 Range("B"&i+3)으로 코딩한 것과 조금 차이가 있는데요. 

i+3행을 선택하는 이유는 4번째 행부터 이름이 기입되어 있고, i는 1부터 시작하므로 i에 3을 더해줘야 올바른 행을 갖고 오기 때문입니다.

 

728x90

 

실행 결과

개발도구>매크로에서 '시트생성및이름설정' 매크로를 실행한 결과, 위의 사진처럼 5개의 시트가 각각 설정한 이름으로 생성되었습니다. 또한, 마지막으로 생성된 'Test5'시트가 선택된 상태임을 알 수 있습니다.

 

728x90

댓글