2014-04-07 6 views
1

동일한 메소드를 여러 객체에 적용하는 방법이 있는지 궁금합니다. 다른 말로하면, 나는 "With"문과 반대되는 것을 찾는 것이다.여러 객체에 동일한 메소드 적용

내가 문 "과 함께"을 사용하여 알고, 내가 하나의 객체에 여러 방법을 적용 할 수

With ITEM_RNG 
    .ClearContents 
    .ClearFormats 
    .ClearOutline 
End With 

을하지만, 나는 하나의 방법을 적용하고자하는 여러 범위의 개체가 :

ITEM_RNG.ClearContents 
VALUE_RNG.ClearContents 
SUM_RNG.ClearContents 

루프를 만들 개체 배열을 만들려고했지만 위의 구문보다 복잡합니다. 명시 적으로 .ClearContents를 각 개체에 개별적으로 추가하지 않고이 작업을 수행 할 수 있습니까?

이제 Union 기능에 대해 배운 것을 사용하여 다음과 같은 성공을 거두려고 노력했습니다.

Sub ClearBox(SeriesBox As MSForms.ListBox) 
    SeriesBox.Clear 
End Sub 

Sub SeriesBoxesClearall() 
    ClearBox Application.Union(SERIES1_BOX, SERIES2_BOX, SERIES3_BOX) 
End Sub 

여기서 SERIES [1-3] _BOX는 MSForms.ListBox 개체입니다. 이 작업을 할 수있는 방법이 있습니까, 아니면 연합이 여기에 적용되지 않습니까?

답변

3

당신은 Application.Union 사용할 수 있습니다 (가정을 그 같은 시트의 모든 범위) :

Application.Union(ITEM_RNG,VALUE_RNG,SUM_RNG).ClearContents 

또는이 같은 :

With Application.Union(ITEM_RNG,VALUE_RNG,SUM_RNG) 
    .ClearContents 
    .ClearFormats 
    .ClearOutline 
End With 

UPD : 대한

Sub cleanUp(rng As Range) 
    rng.ClearContents 
End Sub 

Sub test() 
    Call cleanUp(Application.Union(ITEM_RNG,VALUE_RNG,SUM_RNG)) 
End Sub 
+0

감사합니다 이. 노조의 각 객체에 대해 동일한 함수를 실행하는 간단한 방법이 있지만 특정 객체를 기반으로 입력을 변경하는 것이 좋습니다. 나는 이것이 배열을 통해 루핑을해야만한다고 가정한다. 맞습니까? – teepee

+0

예, 배열과 루프를 사용하는 것이 더 좋다. –

+0

범위를 입력으로 사용하고 내용을 지우는 기능이 있더라도 유니온을 인수로 사용하지 않는 것으로 보입니다. 왜 노동 조합은 통과 될 수 없습니까? – teepee

관련 문제