엑셀VBA - 시트 숨기기/해제하기 컨트롤러
여러명이 파일이 사용하다보면 필요에 따라 시트를 만들기도 하고,
숨기기도 하는데, 시트를 숨기기/해제하기는 영 귀찮고, 놓치기도 쉽다.
가끔 외부로 내보내는 파일에 숨기기가 되어있는지 모르고 보내는 ㅎㄷㄷ한 때도 있다.
이를 방지하기 위해 간단한 숨기기/해제하기 컨트롤을 VBA로 만들어 보았다.
허접한 코드이지만, 좀 수정하면 괜찮아 질지 모른다.
사용법은 아래 동영상으로 올려뒀는데, 핵심은 2개의 사용자 버튼을 사용했다는 점이다.
첫번째는 목록을 만드는 거고, 두번째는 정보가 업데이트 됐을때, 이를 갱신하는 것이다.
코드는 아래 있으니, 필요하신 분들은 가져다가 수정해서 쓰시면 되겠음.
[시트현황 목록 만들기]
Sub sheetVisibleOrNot()
Application.ScreenUpdating = False
Dim xlvallist(2) As String
xlvallist(1) = "ON"
xlvallist(2) = "OFF"
Dim txt As String
If MsgBox("A, B, C열이 지워집니다." & vbCr & "계속하시려면 '예(Y)'를 클릭하세요.", vbYesNo + vbExclamation, "계속하실껀가요?") = vbYes Then
Range("a:c").EntireColumn.Delete
ActiveSheet.Range("a1").Activate
For i = 1 To Worksheets.Count
Cells(0 + i, 1) = Worksheets(i).Name
txt = Worksheets(i).Name
Cells(0 + i, 2).Activate
If Worksheets(i).visible = True Then
ActiveCell.Value = "ON"
Else
ActiveCell.Value = "OFF"
End If
Cells(0 + i, 3).Value = Chr(61) & "HYPERLINK(""" & Chr(35) & "'""" & Chr(38) & """" & txt & """" & Chr(38) & """'!A1"",""GO"")"
With ActiveCell.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Join(xlvallist, ",")
End With
Next i
End If
Range("a:a").EntireColumn.AutoFit
With ActiveCell
.Offset(2, 0).Value = "*숨기기할 시트를 OFF 처리하고 숨기기 업데이트를 클릭하세요."
.Offset(3, 0).Value = "*현재시트는 OFF 될 수 없습니다. "
.Offset(3, 0).Font.ColorIndex = 3
.Offset(4, 0).Value = "*숨기기 상태의 시트로는 이동할 수 없습니다."
End With
Application.ScreenUpdating = True
End Sub
[숨기기 여부업데이트하기]
Sub controlVisibility()
Dim endrow As Integer
ActiveSheet.Cells(1, 2).Select
endrow = Range("b1").End(xlDown).Row
For i = 1 To endrow
If Cells(i, 2).Value = "ON" Then
Worksheets(i).visible = True
ElseIf Cells(i, 2).Value = "OFF" And Cells(i, 1).Value <> ActiveSheet.Name Then
Worksheets(i).visible = False
Else: MsgBox "This WorkSheet is Must Be Visible"
Cells(i, 2).Value = "ON"
End If
Next i
End Sub