2014-05-23 2 views
1

동료들로부터받은 추가 시트로 가득 찬 Excel 템플릿이 있습니다. 받은 각 시트에는 이름이 같은 약 12 ​​개의 명명 된 범위가 포함되어 있습니다. 각 이름은 "플래그"로 시작합니다. loop through names and delete those not matching specified pattern"플래그"가 포함 된 명명 된 범위를 삭제하는 방법

내가 내 자신의 코드를 작성하는이 솔루션을 사용 : 나는 이름을 삭제하는 솔루션을 제공 유래에 대한 또 다른 질문을 발견

주어진 이름과 동일하지 않은 이름으로 다양하다. 삭제하려는 이름 (내 파일을 너무 느리게 만들기 때문에)은 모두 "플래그"로 시작합니다. 는 그래서 저는 "깃발"로 시작하는 내 통합 문서의 각 이름을 찾기 위해

left(myname.namelocal, 5) 

기능을 사용하고 삭제합니다.

그러나이 코드는 작동하지 않습니다. 코드를 실행하면 이름이 삭제되지 않습니다.

그리고 왜 작동하지 않는지 이해할 수 없습니다. 코드를 테스트하기 위해 작은 파일에서 유사한 코드를 시도했습니다. 괜찮 았어.

유일한 차이점은 테스트 파일이 암호로 보호되어 있지 않다는 점입니다. 그것이 코드가 이름을 삭제할 수 있도록 코드에 추가 한 것입니다.

Sub deletenames() 
'verwijderd alle naam-bereiken waarvan de naam begint met flags uit het verwerkingsbestand. 

Dim ws As Worksheet 
Dim myName As Name 

For Each ws In ThisWorkbook.Worksheets 

ws.Unprotect ("TM") 

Next ws 

For Each myName In ThisWorkbook.Names 

If Left(myName.NameLocal, 5) = "flags" Then myName.Delete 

Next 

End Sub 

이 코드를 작성하려면 어떻게해야합니까?

답변

0

Excel에서는 시트 별 및 통합 문서 이름 범위 모두를 허용하는 것이 일반적입니다. 모든 시트가 함께 복사되었다고 언급 했으므로 명명 된 범위가 시트와 관련되어있는 것으로 판단됩니다.

편집 : 시트 특정 명명 된 범위에 이름 Sheet!Range를 가지고 있고, 따라서 귀하의 체크 시트 접두사를 고려해야합니다. Like로 이름을 비교하는 의견으로하는 솔루션은 괜찮 : 내 코드를 변경하고 통합 문서의 각각에 대해 name.local을 포함하는 MSGBOX을 보여주기 위해 IK를 할 때

If myName.NameLocal Like "*!flags*" Then myName.Delete 
+0

, 나는 '워크 시트 같은 이름을 가져 이름 '! flags10_filterdatabase. 따라서 범위 이름에서 시작 부분을 보는 대신 작업 "플래그"를 찾기 위해 코드를 변경해야한다고 생각합니다. "좋아요"를 사용하여 그렇게 할 수 있습니까? – DutchArjo

+1

이 코드는 나를 위해 속임수를했습니다 : If myName.NameLocal Like "*"& "flags"& "*"Then myName.Delete' – DutchArjo