나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 dew (dewdrop)

추천:  2
파일:     조회:  1692
제목:   [RE]안녕하세요. 워크시트 숨김처리에 관하여 문의드립니다.
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 엑셀 버전(95,97,2000,xp,2003,2007): office 2016

* 아래줄에 질문을 작성하세요 >>

  안녕하세요. vba 사용이 서툴러서 고수님들의 도움을 얻고자 합니다.

- 현황
 ㅇ 하나의 통합문서에 약 20개 정도의 sheet가 있습니다.
 ㅇ 작업단계별로 사용하는 시트만 visible로 처리하려고 합니다.
 ㅇ 시트탭에 표시되는 이름은 작업단계별로 이름이 변경됩니다.

 → 따라서, 단계별로 사용할 시트들을 array로 묶어 사용할 시트만 보이게 하려고 합니다.

- 문제점
 ㅇ 아래와 같이 코드를 작성하였으나 "13 런타임" 오류가 발생하고 있습니다.
 ㅇ "sheet name" 기준이 아닌 VBA_속성_(이름) 혹은 Code Names 으로 작성하다보니 오류가 발생한 것 같습니다.

- 질문
 ㅇ "(이름)" 기준으로 작성할 수 있는 방법이 있는지 알려주시면 감사하겠습니다.

-------------------------작성코드----------------------------------

 Dim ws2, ws4, ws5 as long '각 소요일자별 시트묶음
 ws2 = array("enter2", "reg2", "process2", "output2")
 ws4 = array("enter4", "reg4", "process4", "output4", "tt4")
 ws5 = array("enter5", "reg5", "process5", "PIA", "tt5", "score")
 
 select case day '소요일자별로 숨김시트 설정
        case "2"
             sheet2(ws2).visible=true
             sheets(ws4).visible=false
             sheets(ws5).visible=false
        case "4"
             sheet2(ws4).visible=true
             sheets(ws2).visible=false
             sheets(ws5).visible=false
        case "5"
             sheet2(ws5).visible=true
             sheets(ws2).visible=false
             sheets(ws4).visible=false
 end select

-------------------------작성코드----------------------------------


==============[으아니님 글에 대한 답변입니다]==============

Sub SheetHiddenTest()
    Dim Day As String
    Dim ws2, ws4, ws5       '각 소요일자별 시트묶음
    
    ws2 = Array("enter2", "reg2", "process2", "output2")
    ws4 = Array("enter4", "reg4", "process4", "output4", "tt4")
    ws5 = Array("enter5", "reg5", "process5", "PIA", "tt5", "score")
    
    Day = "2"
    
    Select Case Day '소요일자별로 숨김시트 설정
        Case "2"
            SheetVisible ws2, True
            SheetVisible ws4, False
            SheetVisible ws5, False
         Case "4"
            SheetVisible ws4, True
            SheetVisible ws2, False
            SheetVisible ws5, False
         Case "5"
            Call SheetVisible(ws5, True)
            Call SheetVisible(ws2, False)
            Call SheetVisible(ws4, False)
    End Select
End Sub

Sub SheetVisible(vArray, bX As Boolean)
    Dim vX
    
    On Error Resume Next
    For Each vX In vArray
        Sheets(vX).Visible = bX
    Next
    On Error GoTo 0
End Sub
 
[불량 게시물 신고]  
        
  

작성일 : 2019-06-07(16:31)
최종수정일 : 2019-06-07(16:31)
 


 ◎ 관련글

  제 목   작성자   날짜
안녕하세요. 워크시트 숨김처리에 관하여 문의드립니다. 으아니 2019-06-07
[RE]안녕하세요. 워크시트 숨김처리에 관하여 문의드립니다. 참서리 2019-06-10
[RE]안녕하세요. 워크시트 숨김처리에 관하여 문의드립니다. dew 2019-06-07