EXCEL VBA

[ 엑셀 VBA ] 시트 이동하는 여러가지 방법, 시트 이동하기

카루루1007 2024. 9. 6. 11:27
728x90
반응형

엑셀 VBA에서 시트를 이동하는 여러 가지 방법입니다.

앞서 포스팅 한 시트 추가하기/삭제하기와 크게 다르지 않습니다.

시트 추가하는 여러가지 방법, 엑셀 시트 추가하기

시트 삭제하는 여러가지 방법, 엑셀 시트 삭제하기

 

다른 점은 Move를 사용한다는 점입니다.

 

 현재 시트를 한 칸 앞으로 이동

 

Sub 시트이동()
    ActiveSheet.Move before:=Worksheets(ActiveSheet.Index - 1)
End Sub

 

이미 맨 앞에 있다면 이동할 수 없으므로

맨 앞에 위치한 시트인지 확인하는 코드 추가

Sub 시트이동()
    If ActiveSheet.Index > 1 Then
        ActiveSheet.Move before:=Worksheets(ActiveSheet.Index - 1)
    Else
        MsgBox "더 이상 이동할 수 없습니다."
    End If
End Sub

 

 현재 시트를 한 칸 뒤로 이동

 

Sub 시트이동()
    If ActiveSheet.Index < Worksheets.Count Then
        ActiveSheet.Move after:=Worksheets(ActiveSheet.Index + 1)
    Else
        MsgBox "더 이상 이동할 수 없습니다."
    End If
End Sub

 

 특정 시트 앞으로 이동

 

특정 시트의 앞으로 이동하려면

그 시트의 index 로 이동하면 됩니다.

그러면 기존 시트는 자연히 뒤로 밀리게 됩니다.

Sub 시트이동()

    targetSheet = Worksheets("Sheet16").Index
    
    ActiveSheet.Move before:=Worksheets(targetSheet)
    
End Sub

 

 특정 시트 뒤로 이동

 

아래 코드는 특정 시트의 시트 번호 그다음으로 시트를 이동시킵니다.

Sub 시트이동()

    targetSheet = Worksheets("Sheet16").Index
    
    ActiveSheet.Move after:=Worksheets(targetSheet)
    
End Sub

 

아래 코드는 특정 시트의 그 다음시트의 앞으로 시트를 이동시킵니다.

Sub 시트이동()
    
    targetSheet = Worksheets("Sheet16").Index
    
    ActiveSheet.Move before:=Worksheets(targetSheet + 1)
    
End Sub

 

결국 결과는 같으나 가독성 측면에서는 위에 코드가 더 좋아 보입니다.

 

 맨 앞으로 이동

 

Sub 시트이동()
    
    ActiveSheet.Move before:=Worksheets(1)
    
End Sub

 

 맨 뒤로 이동

 

Sub 시트이동()
    
    ActiveSheet.Move After:=Worksheets(Worksheets.Count)
    
End Sub

 

 주의할 점

 

마찬가지로 특정 시트의 앞 또는 뒤의 위치로 이동시킬 때에는

해당 시트가 존재하는지 확인하는 코드가 필요합니다.

 

또한, 위 예시는 활성화된 시트를 기준으로 잡았기 때문에 필요가 없었으나,

시트의 이름을 사용자로부터 입력받는 등의 기능을 하는 코드를 작성할 때에는

입력받은 시트의 이름이 있는지 확인하는 코드도 필요합니다.

여기를 방문하시면 더 많은 엑셀 관련 자료를 확인할 수 있습니다.

엑셀 공부하기
VBA 공부하기

 

728x90
반응형