2011-02-01 3 views
0

목록에 시트 이름을 제공하는 동적 이름 지정된 범위가 있습니다 (A2 = 오스트리아, A3 = 독일, A4 = 폴란드라고 가정 해 봅시다).이 목록은 사용자에 따라 크기가 다를 수 있으므로 명명 된 범위에 오프셋이있어서 열 A의 모든 셀을 그 안에 이름으로 캡처합니다.명명 된 범위 배열의 시트 숨기기

IF 문을 사용하여이 명명 된 범위를 기반으로 특정 시트를 매우 숨기고 싶습니다. 런타임 오류 '13': 나는 다음과 같은 오류가 위와

Public Sub test() 
    Sheets(Array(Range("MyRange"))).Visible = xlVeryHidden 
End Sub 

: 같은

뭔가 형식 불일치

제안하십시오.

당신에게 폴

감사

답변

1

당신 수 당신은 수직 범위를 받고 있다면 당신은 시트()에 배열을 전달 할 수 있지만,

Sub Test() 
dim oCell as range 
for each oCell in Range("MyRange) 
Sheets(oCell.value).visible=xlVeryHidden 
next oCell 
end sub 
1
이름의 배열을 할 수

시트 당신이 이름을 통해 루프를 필요로하고 시트를 하나씩을 숨길 것이다, 그래서이 시트 (인덱스)로 선언의 주장이다로 운수 나쁘게.

시도 :

Sub test() 
    Dim rngCell As Range 
    For Each rngCell In Range("MyRange") 
     Sheets(rngCell.Value).Visible = xlSheetVeryHidden 
    Next rngCell 
End Sub 
+0

이 도움 폴나요? –

0

명명 된 범위에 단지 루프 당신 먼저 트랜스 포즈해야합니다.

나를 위해 작동합니다

ThisWorkbook.Sheets (Application.Transpose (Sheet3.Range ("SHEETS") 값).) 표시 = 시트 값 "Sheet1에 포함되어 _ xlSheetHidden

. "및"Sheet2 ". 불행하게도 단지 xlSheetHidden로하지 xlSheetVeryHidden와 함께 작동하는 것 같다 몇 가지 이유 ....