엑셀(Excel) VBA – 워크시트(Worksheet) 개체를 이용해서 시트 관리하는 방법

 

환경: Microsoft Excel 2010

 

VBA 에는 워크시트를 제어할 수 있는 개체를 제공하고 있습니다. 이 개체를 이용하면 시트를 추가하거나 기존에 존재하던 이름을 변경할 수 있습니다. 또한 시트를 삭제하거나 위치를 바꿀 수도 있습니다. 샘플 예제를 통해서 어떻게 구현하는지 알아 보겠습니다. 

 

1. 현재 시트명을 알아 오는 방법

 

▼ 현재 활성화된 시트명을 가져오는 방법입니다. ActiveSheet 는 활성화된 시트 개체 입니다. 개체에서 Name 속성값이 활성화된 시트 개체의 이름을 나타냅니다. 다른 특정 시트를 활성화 시켜서 이름을 알고 싶다면 Worksheets("Sheet2").Activate 로 활성화하고 나서 값을 가져옵니다. 

 

Sub Sheet_Click()

    MsgBox "현재 활성화된 시트명은 " & ActiveSheet.Name & " 입니다."

End Sub

엑셀(Excel) VBA – 워크시트(Worksheet) 개체를 이용해서 시트 관리하는 방법

 

2. Sheet 추가하는 방법

 

▼ 다음은 새로운 시트를 추가하는 방법입니다. 시트를 추가하기 위해 Worksheets 개체를 사용합니다. Add 함수를 이용하면 시츠를 추가할 수 있습니다. 그런데 인수로 아무것도 넘기지 않으면 그림처럼 활성화된 시트 앞쪽에 추가가 됩니다. 보통 뒤에서 차례대로 추가하고 싶겠죠. 

 

Sub Sheet_Click()

    Worksheets.Add

End Sub

엑셀(Excel) VBA – 워크시트(Worksheet) 개체를 이용해서 시트 관리하는 방법

 

▼ 현재 활성화된 시트 뒤에서부터 차례대로 추가하고 싶다면 Add 함수에 after 인수 변수를 붙이고 값을 넣어야 합니다. after:=Worksheets(1) 는 현재 활성화된 시트 바로 붙이겠다는 의미입니다. Count 는 추가하고 싶은 시트의 개수를 나타냅니다.

 

Sub Sheet_Click()

    Worksheets.Add after:=Worksheets(1), Count:=1

End Sub

엑셀(Excel) VBA – 워크시트(Worksheet) 개체를 이용해서 시트 관리하는 방법

 

3. 시트 활성화와 시트 이름 변경하는 방법

 

▼ 기존에 추가되어 있던 시트명을 변경하는 방법입니다. Worksheets("Sheet2").Activate 에서 지정한 "Sheet2" 가 없으면 현재 활성화된 시트명을 바꾸게 됩니다. "Sheet2" 의 시트명을 바꾸기 위해 Activate 를 사용해서 활성화 시킨 뒤 ActiveSheet Name 속성에 바꿀 이름을 넣었습니다.

 

Sub Sheet_Click()

    Worksheets("Sheet2").Activate

    ActiveSheet.Name = "ChangName"

End Sub

엑셀(Excel) VBA – 워크시트(Worksheet) 개체를 이용해서 시트 관리하는 방법

 

4. 시트 이동과 복사, 삭제

 

▼ 시트의 이동과 복사하는 방법입니다. 이동은 Move 함수를 사용했으며, after 인수로 어느 워크시트 뒤로 이동할지 결정합니다. 아래 소스는 Sheet1 Sheet2 뒤로 이동합니다. 복사는 Copy 함수를 사용했으며 after 인수로 어디에 위치할지 정합니다. 그리고 복사한 시트의 이름은 뒤에 (2) 가 붙습니다.

 

Sub Sheet_Click()

Worksheets("Sheet1").Move after:=Worksheets("Sheet2")

    Worksheets("Sheet1").Copy after:=Worksheets("Sheet2")

End Sub

엑셀(Excel) VBA – 워크시트(Worksheet) 개체를 이용해서 시트 관리하는 방법


▼ 다음은 시트를 삭제하는 방법입니다. 시트를 삭제할 때 Delete 함수를 이용하는데 실행하자 마자 삭제 여부를 묻는 경고 메시지가 뜹니다. 진짜 삭제할 것인지 묻는 것입니다. 매번 삭제할 때 마다 사용자 개입이 필요하다면 매크로가 아니겠죠. 알림메시지를 안 뜨도록 설정하는 방법은 Application.DisplayAlerts = False 입력하는 것입니다. 앞쪽에 False 로 바꾼 후 Delete 를 이용해 시트를 삭제합니다. 그리고 엑셀 전체에 적용되는 설정값이기 때문에 원상 복구 해야 겠죠. Application.DisplayAlerts = True 를 이용해서 다시 메시지가 뜰 수 있도록 설정해 놓습니다.

 

Sub Sheet_Click()

    Application.DisplayAlerts = False

    Worksheets("Sheet1 (2)").Delete

    Application.DisplayAlerts = True

End Sub

엑셀(Excel) VBA – 워크시트(Worksheet) 개체를 이용해서 시트 관리하는 방법

Posted by 녹두장군