오늘의 팁은 이전 시트로 가기입니다.
이 팁은 시트 작업을 많이 하시는 분들에게 필요한 기능으로 워크시트간 이동이 많을 경우에 효과적입니다. Sheet1이라는 시트에서 작업을 하다가 Sheet5라는 시트로 갔다가 다시 처음 작업하던 Sheet1시트로 찾아갈 경우 마우스로 시트를 일일이 선택해서 찾아가야 합니다. 시트가 많을 경우 스크롤 바도 움직여야 하고 좀 불편함을 느끼셨을 겁니다.
이전시트로 가기 즉 바로 이전에 작업하던 시트로 분기하는 것입니다. 단축키로 분기할 수도 있고 마우스 오른쪽 버턴을 눌러 셀 메뉴에서 선택 할 수도 있습니다.
그럼 아래 코드를 먼저 살펴 보면 이해하기 편할 겁니다.
전역변수를 몇 개 설정했습니다. 이전시트와 현재시트를 기억하기 위함입니다.
Option Explicit
Dim BeforeSheet As Worksheet
Dim ActSheet As Worksheet
Const BWS_MNU_ADD As String = "이전작업시트로 가기"
Sub Auto_Open()
Call GotoBeforeSheet
Application.OnKey "^k", "BeforeSheetSelect"
End Sub
Sub Auto_close()
Application.OnSheetActivate = ""
Application.OnKey "^k", ""
End Sub
Function ActiveSheetSave()
On Error Resume Next
Set BeforeSheet = ActSheet
Set ActSheet = ActiveSheet
End Function
Sub BeforeSheetSelect()
On Error Resume Next
BeforeSheet.Activate
Set BeforeSheet = ActSheet
Set ActSheet = ActiveSheet
End Sub
Sub GotoBeforeSheet()
Dim oMnu As CommandBarControl
Dim oCtl As CommandBarButton
On Error Resume Next
Application.OnSheetActivate = "ActiveSheetSave"
Set BeforeSheet = ActiveSheet
Set ActSheet = ActiveSheet
Application.CommandBars("Cell").Controls(BWS_MNU_ADD).Delete
Set oCtl = Application.CommandBars("Cell").Controls.Add(Type:=msoControlButton, ID:=1, temporary:=True, Before:=1)
With oCtl
.FaceId = 250
.Caption = BWS_MNU_ADD
.Style = msoButtonIconAndCaption
.OnAction = ThisWorkbook.Name & "!BeforeSheetSelect"
.BeginGroup = True
End With
End Sub
예전에 매크로 바이러스가 한참 유행일때 그 코드 들을 보면 대부분 OnSheetActivate 가 사용되었었답니다.
참고로
첫댓글 onkey 메서드를 익힐 수 있는 유용한 팁입니다...
더불어 잊고 있던 OnSheetActivate...
수고하셨습니다...!
이것도 역시 좋은 팁입니다. 근데 역시 다른 파일을 여니까 안되네요...