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
주의할 점
마찬가지로 특정 시트의 앞 또는 뒤의 위치로 이동시킬 때에는
해당 시트가 존재하는지 확인하는 코드가 필요합니다.
또한, 위 예시는 활성화된 시트를 기준으로 잡았기 때문에 필요가 없었으나,
시트의 이름을 사용자로부터 입력받는 등의 기능을 하는 코드를 작성할 때에는
입력받은 시트의 이름이 있는지 확인하는 코드도 필요합니다.
여기를 방문하시면 더 많은 엑셀 관련 자료를 확인할 수 있습니다.
728x90
반응형
'EXCEL VBA' 카테고리의 다른 글
[ 엑셀 VBA ] 선택한 범위의 셀 주소 표시하기 (0) | 2024.09.07 |
---|---|
[ 엑셀 VBA ] VBA로 하이퍼링크(Hyperlinks) 추가하기 (0) | 2024.09.06 |
[ 엑셀 VBA ] 시트 삭제하는 여러가지 방법, 엑셀 시트 삭제하기 (0) | 2024.09.06 |
[ 엑셀 VBA ] 시트 추가하는 여러가지 방법, 엑셀 시트 추가하기 (0) | 2024.09.05 |
[ 엑셀 VBA ] 엑셀 VBA의 Err 객체 : VBA의 에러를 다루기 위한 가이드 (2) | 2024.09.04 |