엑셀을 사용하다보면
여러개의 시트를 만들어야 하는 경우가 생깁니다.
부서별로 데이터를 분류한다거나
반별로 데이터를 분류하는 등
시트 여러개를 한번에 만들어야 하는 일이 생깁니다.
만들어야하는 시트가 10개 정도라면
쉽게 만들 수가 있으나,
그 수가 20개, 30개가 넘어가게되면
그리고 그 일을 자주 반복해야 한다면
간단한 VBA 코드를 작성하여
업무의 효율성을 높일 수 있습니다.
[ 만들어볼 기능 ]
첫번째 시트에 아래 그림과 같이 데이터를 입력합니다.
입력된 데이터의 양만큼
시트를 만들고 이름을 데이터에 입력된 이름으로
바꾸어 줄 것입니다.
현재의 시트를 제외하고
총 10개의 시트가 만들어지고
그 이름이 [ 1반 ~ 10반 ]이 만들어 져야 합니다.
만약 아래 그림과 같이
기존에 시트가 있다면,
기존의 시트의 이름은 데이터에 입력된 이름으로 바꾸고
그 외의 시트는 새로 생성하여
이름을 지정해 주는 프로그램을 만들 것입니다.
[ 순 서 ]
먼저 아래 그림과 같이
[ A열 ]에 필요한 시트의 이름 데이터를 넣어주고
[ 개발도구 ] → [ 삽입 ] → [ 단추(양식 컨트롤) ]
을 눌러 버튼을 만들어 줍니다.
※VBA를 사용하기 위한 초기설정을 모르신다면 여기를 누르시면 됩니다.
그 다음 [ ALT + F11 ]키를 누르거나
[ 개발도구 ] → [ Visual Basic ]를 누른 후
아래 그림과 같이
[ 삽입 ] → [ 모듈 ]
을 차례로 눌러줍니다.
이제 아래의 코드를 복사한 후 붙여 넣기를 합니다.
Sub 시트이름바꾸기()
Dim ws As Worksheet
Dim r As Range
Dim cell As Range
Dim i As Integer
Set ws = ActiveSheet
Set r = ws.Range("A1", ws.Range("A" & Rows.Count).End(xlUp))
i = 2
For Each cell In r
If i <= ThisWorkbook.Sheets.Count Then
On Error Resume Next
ThisWorkbook.Sheets(i).Name = cell.Value
If Err.Number <> 0 Then
Err.Clear
MsgBox "시트 이름 '" & cell.Value & "'은(는) 잘못되었거나 이미 사용 중입니다.", vbExclamation
End If
On Error GoTo 0
Else
ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)).Name = cell.Value
End If
i = i + 1
Next cell
End Sub
이 코드는 [ A열 ]에 입력한 데이터만큼
시트의 이름을 바꾸거나, 시트를 새로 생성해서 이름을 지정합니다.
첫번째 시트는 건드리지 않고
두번째 시트의 이름부터 바꾸어 나갑니다.
[ i = 2 ]부분 때문에 그렇습니다.
데이터의 내용이
시트이름으로 사용하지 못하는
문자열이 있을 경우
경고메세지가 나타나며 프로그램을 종료됩니다.
하지만 프로그램이 종료된 후 다시한번 실행하면
문제가 되는 셀의 데이터를 제외한 나머지 데이터의 내용으로
시트가 다시 만들어집니다.
[ 단추에 매크로 연결하기 ]
처음에 만들었던
[ 단추 ]에 마우스 우클릭을 한 후
[ 매크로 지정 ]을 눌러줍니다.
만들어 둔 매크로를 선택한 후
[ 확인 ]을 눌러줍니다.
이제 [ A열 ]에 데이터를 입력하고
[ 단추 ]를 누르면
매크로가 실행되고
시트가 만들어집니다.
다음은 해당 프로그램을 실행했을 때
실행되는 화면입니다.
여기를 방문하시면 더 많은 엑셀 관련 자료를 확인할 수 있습니다.
'EXCEL VBA' 카테고리의 다른 글
엑셀 VBA 폴더 내 파일이름 확인하기, DIR 함수, DIR() (0) | 2023.10.15 |
---|---|
엑셀 VBA 폴더 및 파일 선택 창 열기, Application.FileDialog() (0) | 2023.10.14 |
엑셀 VBA 시트별로 다른 파일로 저장하기, 엑셀 VBA 시트 각각 저장하기 (0) | 2023.10.07 |
엑셀 각 시트의 자료 취합하기, 엑셀 각 시트의 자료 하나의 시트로 모으기 (1) | 2023.10.03 |
선택한 셀의 행렬 강조하기, 선택한 셀 행렬 색으로 강조하기 (0) | 2023.09.24 |