본문 바로가기

엑셀VBA

[엑셀VBA] select, activate 시트 이동하기

반응형

안녕하세요. 춤추는초코칩입니다.

 

엑셀 파일에서 여러 시트 중 내가 원하는 시트로 이동하는 VBA를 만들어 보려고 합니다.

시트를 이동할 때 사용하는 method는 select 혹은 activate입니다.

엑셀시트가 1번시트, 2번시트, 3번시트가 있는 엑셀파일입니다.

select와 activate를 이용하여, 시트를 이동하는 vba를 만들어 보도록 하겠습니다.

 

'1번시트→ 2번시트→3번시트→1번시트→2번시트

Sub moveSheets()
    Worksheets(2).Select
    Worksheets("3번시트").Select
    Worksheets(1).Activate
    Worksheets("2번시트").Activate
End Sub

각각의 시트가 선택되는 것을 확인할 수 있습니다.


select는 시트를 선택하는 메서드로 복수의 시트를 선택할 수 있습니다. 

 

'2번시트, 3번시트 선택

Sub moveSheets2()
    Worksheets(Array(2, 3)).Select
End Sub

2번시트와 3번시트가 선택됩니다.


이 상태에서 activate를 실행해보겠습니다.

 

'2번시트→3번시트→1번시트

Sub moveSheets3()
    Worksheets(Array(2, 3)).Select
    Worksheets(2).Activate
    Worksheets(3).Activate
    Worksheets(1).Activate
End Sub

2번시트를 activate할 때에는 동작하지 않고, 3번시트를 activate할때에는 2번시트와 3번시트가 선택된 상태에서 activate되는 것을 확인 할 수 있습니다. 다음 1번시트를 activate할 때에는 1번시트만 activate됩니다.


이번에는 2번, 3번시트가 선택된 상태에서 각각의 시트를 select해보겠습니다.

 

'2번시트→3번시트→1번시트

Sub moveSheets4()
    Worksheets(Array(2, 3)).Select
    Worksheets(2).Select
    Worksheets(3).Select
    Worksheets(1).Select
End Sub

매번 새롭게 select되는 것을 확인할 수 있습니다.


 한 개의 시트를 select하거나 activate할 때에는 두 개의 method가 크게 차이가 없지만 2개의 method를 혼합하여 사용할 때에는 의도치 않은 결과가 초래될 수 있으니 유의해야할 거 같습니다.

반응형