2017-10-13 1 views
0

특정 시트를 선택하는 코드를 작성하려고합니다 (모두가 아닌 모든 시트가 서로 인접 해 있지는 않습니다). 동일한 셀 범위를 가지며, 선택을 해제하고, 다른 시트 그룹을 선택하고, 각각 동일한 범위를 지 웁니다. 코드는 다음과 같습니다.VBA를 사용하여 통합 문서 내의 특정 시트 만 선택하여 범위의 내용을 지우십시오.

ActiveWorkbook.Sheets(Array("J2a", "J7", "J10", "J11", "J13", "J17", "J18", "J19")).Select 
    Range("C12:E14, C22:E24, C32:E34, C42:E44, C52:E54, C62:E64, C72:E74,C82:E84, C92:E94, C102:E104, C112:E114, C122:E124, C132:E134, C142:E144, C152:E154").ClearContents 
     ThisWorkbook.Worksheets("Control").Activate 

문제는 활성 목록 (선택 목록의 첫 번째 내용)에서 내용을 지우는 것입니다. 나는 시트를 선택하지 않고 여러 장에 내용을 취소 할 수있는 방법이 있어야합니다 생각 그래서 내가 다음에 코드를 변경 :

ActiveWorkbook.Sheets(Array("J2a", "J2b", "J7", "J10", "J11", "J13 DM", "J13 DS", "J17", "J18", "J19")).Range("C12:E14, C22:E24, C32:E34, C42:E44, C52:E54, C62:E64, C72:E74, C82:E84, C92:E94, C102:E104, C112:E114, C122:E124, C132:E134, C142:E144, C152:E154").ClearContents 
그러나

지금은라는 오류를 '개체가이 속성을 지원하지 않습니다 또는 방법.

내가 뭘 잘못하고 있니? 두 줄은 독립적으로 작동하는 것 같습니다 ... 또한 내 자신의 이해를 위해, 오류의 대상은 무엇입니까? ActiveWorkbook?

답변

1

아래 코드와 같은 것을 사용할 수 있습니다. 이 배열은 sheetNamesArray 배열에 이름이있는 모든 시트를 통과하고 rangesArray에 정의 된 모든 범위를 지 웁니다.

다른 범위의 다른 시트를 지우려면 다른 값으로이 작업을 반복하는 것이 좋습니다.

참고 : 모든 용지가 동일한 통합 문서에 있다고 가정합니다.

Dim sheetNamesArray 
Dim rangesArray 

'Array with the names of all of your sheets 
sheetNamesArray = Array("Sheet1", "Sheet2", "Sheet3") 
'Array with all of your ranges 
rangesArray = Array("A2:B2", "A4:B4", "A6:B6") 

'Go through each sheet in the array 
For Each sheetName In sheetNamesArray 
    'Go to each range in the sheet 
    For Each rangeName In rangesArray 
     'Clear the value 
     ThisWorkbook.Sheets(sheetName).Range(rangeName).Clear 
    Next rangeName 
Next sheetName 
+0

@RichPrag 작동 했습니까? – Teasel

+0

예! 정말 고마워, 정말로 나를 분류했다. –

+0

@RichPrag 환영합니다! 다행이 된 것을 기쁘게 생각합니다. – Teasel

관련 문제