※'엑셀 매크로로 시트 생성하기'를 먼저 보시면 이해하는데 도움이 될 것입니다.
이번 글에서는 설정한 이름으로 시트를 만드는 For 구문 매크로를 소개해드리겠습니다.
예시파일 생황
▲예시 파일에는 현재 시트가 하나밖에 없습니다. 그리고 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을 더해줘야 올바른 행을 갖고 오기 때문입니다.
실행 결과
개발도구>매크로에서 '시트생성및이름설정' 매크로를 실행한 결과, 위의 사진처럼 5개의 시트가 각각 설정한 이름으로 생성되었습니다. 또한, 마지막으로 생성된 'Test5'시트가 선택된 상태임을 알 수 있습니다.
'엑셀, VBA, 파워쿼리 > VBA 매크로' 카테고리의 다른 글
[VBA 매크로] '직접 실행 창' 사용법 #1 간단한 코드 바로 실행해보기 (0) | 2023.10.10 |
---|---|
[엑셀 VBA 매크로] For 구문으로 엑셀 시트 이름 한번에 바꾸기 #1: Range(셀 주소) 버전 (1) | 2023.10.10 |
[엑셀 VBA 코딩] 엑셀 매크로로 시트 생성하기 (0) | 2023.10.10 |
[VBA 매크로] 시트 값복사/모든 시트 값복사 매크로 VB 코드 해석: For 구문 등 (1) | 2023.10.06 |
[VBA 매크로] 매크로 기록과 VB 편집기 (값복사 매크로 첨부) (0) | 2023.10.05 |
댓글