VBA 루틴 – 워크시트 추가하기와 워크시트 이름 지정하기

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Younjung Kim

Last updated on 4월 28, 2023

이 튜토리얼에서는 VBA에서 워크시트를 추가/삽입하는 방법에 대해 설명합니다.

시트 추가하기

다음의 간단한 매크로는 활성시트 앞에 새로운 시트를 추가합니다:

Sub Add ()
    Sheets.Add
End Sub

시트를 삽입하면 새로운 시트가 ActiveSheet가 됩니다. 새 시트에서 작업할때 ActiveSheet 객체를 사용할 수 있습니다(튜토리얼의 마지막 부분에서 새 시트를 변수에 직접 할당하는 방법을 보여 드리겠습니다).

ActiveSheet.Name = "NewSheet"

새 시트를 추가하면서 이름 지정하기

시트 이름을 정의하여 새 시트를 만들 수 있습니다:

Sheets.Add.Name = "NewSheet"

셀 값으로 시트의 이름을 지정하여 새 시트 만들기

셀 값을 사용하여 새 시트의 이름을 지정할 수 있습니다:

Sheets.Add.Name = range("a3").value

다른 시트 앞/뒤에 시트 추가하기

새 시트가 삽입될 위치를 선택할 수도 있습니다. After 또는 Before 속성을 사용하여 통합 문서의 특정 위치에 시트를 삽입할 수 있습니다.

다른 시트 뒤에 시트 삽입하기

아래 코드는 다른 시트 뒤에 새 시트를 삽입합니다:

Sheets.Add After:=Sheets("Input")

아래 코드는 다른 시트 뒤에 새 시트를 삽입하고 시트 이름을 “NewSheet”로 지정합니다:

Sheets.Add(After:=Sheets("Input")).Name = "NewSheet"

위의 두 번째 예제에서는 추가 괄호가 필요합니다(첫 번째 예제에서 두 번째 괄호를 추가하면 오류가 발생합니다).

Before 속성을 사용한 예제는 다음과 같습니다:

Sheets.Add(Before:=Sheets("Input")).Name = "NewSheet"

이 예제에서는 새 시트 위치의 기준이 되는 시트의 이름을 사용하였습니다. 통합 문서에서 가장 첫 부분이나 마지막 부분에 새 시트를 삽입할 수 있도록 시트의 인덱스 번호를 사용하는 경우도 많이 있습니다:

통합 문서 끝에 시트 추가하기

통합 문서의 끝에 시트를 추가하려면 아래 코드를 참고해 주세요:

Sheets.Add After:=Sheets(Sheets.Count)

통합 문서의 첫 부분에 시트 추가하기:

통합 문서의 첫 부분에 시트를 추가하려면 다음과 같이 입력합니다:

Sheets.Add(Before:=Sheets(1)).Name = "FirstSheet"

시트를 추가하고 변수에 할당하기

이 코드는 새 시트를 추가하고 변수에 할당합니다:

Dim ws As Worksheet
Set ws = Sheets.Add

위와같이 선언한 이후 ‘ws’ 변수를 사용하여 새 시트를 참조할 수 있습니다:

ws.name = "VarSheet"

시트 추가하기 예제

시트가 없는 경우 시트 만들기

추가하려고 하는 시트가 존재하지 않는 경우에만 시트를 만들고 싶을 수 있습니다.

 

이름 목록을 참조하여 워크시트 만들기

다음 코드는 현재 통합 문서 내에서 단일 열의 각 셀의 값을 확인합니다. 그런다음 다른 함수를 호출하여 각 셀 값과 시트의 이름이 동일한 시트가 존재하는지 확인하고, 존재한다면 시트를 만들지 않습니다.

Private Sub CommandButton1_Click()

Call CreateWorksheets(Sheets("Sheet2").Range("A1:a10"))

End Sub

Sub CreateWorksheets(Names_Of_Sheets As Range)
Dim No_Of_Sheets_to_be_Added As Integer
Dim Sheet_Name As String
Dim i As Integer

No_Of_Sheets_to_be_Added = Names_Of_Sheets.Rows.Count

For i = 1 To No_Of_Sheets_to_be_Added

Sheet_Name = Names_Of_Sheets.Cells(i, 1).Value

'시트가 존재하지 않고 이름의 글자수가 0보다 긴 경우에만 시트를 추가합니다.

If (Sheet_Exists(Sheet_Name) = False) And (Sheet_Name <> "") Then
    Worksheets.Add().Name = Sheet_Name
End If

Next i

End Sub
Function Sheet_Exists(WorkSheet_Name As String) As Boolean
Dim Work_sheet As Worksheet

Sheet_Exists = False

For Each Work_sheet In ThisWorkbook.Worksheets

    If Work_sheet.Name = WorkSheet_Name Then
        Sheet_Exists = True
    End If

Next

End Function

Sheet2의 A1:A30 셀에 다음과 같은 텍스트가 있습니다:

코드를 실행하면 아래와 같이 시트들이 생성됩니다:

“강아지”가 셀 범위에는 두번 있지만 해당 이름의 시트는 하나만 생성됩니다.

이 튜토리얼의 .XLS 파일을 다운로드하려면 여기를 클릭하세요.

간편한 VBA 코딩

온라인에서 VBA 코드를 더 이상 검색하지 않아도 됩니다. 초보자도 최소한의 코딩 지식으로 프로시저를 처음부터 코딩할 수 있습니다. 코드를 빠르게 작성하고 싶으시다면 모든 사용자를 위한 VBA 코드 작성기인 AutoMacro에 대해 자세히 알아보세요!

alt text

 

자세히 알아보기!


<<VBA 예제로 돌아가기

vba-free-addin

VBA 코드 예시 추가 기능

본 웹사이트에 있는 모든 코드 예시에 쉽게 접근해보세요.

메뉴로 이동하여 클릭만 하면 코드는 모듈에 바로 입력됩니다. .xlam 추가 기능.

(설치가 필요 없습니다!)

무료 다운로드

VBA 코드 예시로 돌아가기