|
* 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.
- 엑셀 버전(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
|
|