-
시트 숨기기 일괄 처리VB(A) 2021. 4. 19. 14:51
시트는 많고
숨길 것도 많고 다시 보이게 할 것도 많은데
엑셀 버전이 낮아서 일괄 처리가 안 될 때
쉽게 처리할 수 있는 추가기능입니다.
엑셀 파일 열어서 '매크로 사용 허용'을 해주시면
리본메뉴에 '추가기능' 탭이 생깁니다.
추가기능 탭에 생성된 '시트 보이기 조정' 아이콘을 눌러보세요
Option ExplicitPrivate Sub UserForm_Initialize()Dim i As IntegerDim j As IntegerDim roundUpSheetscount As IntegerDim chkboxLeft As IntegerDim chkBox As MSForms.checkbox'시트 숫자를 2로 나눔. 체크박스 줄 세우기 위한 용도roundUpSheetscount = WorksheetFunction.RoundUp(Sheets.Count / 2, 0)'체크박스 생성 왼쪽위치chkboxLeft = 12'시트명을 체크박스로 출력'보이는 건 체크, 숨긴 처리된 건 체크해제For i = 1 To Sheets.CountSet chkBox = Frame1.Controls.Add("Forms.CheckBox.1", "CheckBox_" & i)With chkBox.Caption = Sheets(i).Name.Left = chkboxLeft.Top = 12 + (j * 20).Width = 69'시트 숨김 되어있으면 체크해제. 아니면 체크If Sheets(i).Visible = xlSheetVisible Then .Value = TrueEnd Withj = j + 1If i = roundUpSheetscount Thenj = 0chkboxLeft = 90End IfNext i'프레임 및 유저폼 사이즈 조정Frame1.Height = chkBox.Height * (roundUpSheetscount + 2.5)Me.Height = Frame1.Height + 50End SubPrivate Sub Confirm_Click()Dim C As MSForms.ControlApplication.ScreenUpdating = False'체크박스가 0개면 에러메시지 출력If CheckAllUnchecked("CheckBox") = 0 ThenMsgBox "시트 하나는 선택해주세요"Exit SubEnd If'마지막 시트만 보이게 하기(에러 방지)Sheets(Sheets.Count).Visible = xlSheetVisible'체크박스 순환하면서 시트 숨기거나 보이게 하기For Each C In Me.ControlsIf TypeName(C) = "CheckBox" ThenIf C.Value = True ThenSheets(CStr(C.Caption)).Visible = xlSheetVisibleElseSheets(CStr(C.Caption)).Visible = xlSheetHiddenEnd IfEnd IfNext CUnload MeApplication.ScreenUpdating = TrueEnd SubPrivate Function CheckAllUnchecked(checkbox As String) As Integer'체크된 체크박스 숫자 세기Dim C As MSForms.ControlDim i As IntegerFor Each C In Me.ControlsIf TypeName(C) = checkbox ThenIf C.Value = True Then i = i + 1End IfNext CCheckAllUnchecked = iEnd FunctionPrivate Sub cancle_Click()Unload MeEnd Subcs 'VB(A)' 카테고리의 다른 글
폴더를 순환하며 파일을 루트로 옮기기 (0) 2024.04.17 당비휴 근무일지 달력 (0) 2023.02.10 공휴일 적용된 달력 (0) 2021.02.10 유효성검사 유일값 가져오기 (0) 2021.01.19 미디어 파일을 날짜별로 분류 (6) 2019.12.25 댓글