2014-04-07 86 views
1

我很想知道是否有辦法將相同的方法應用於多個對象。換句話說,我正在尋找某種東西,在某種程度上,它是「With」語句的反例。對多個對象應用相同的方法

我知道,使用「與」語句,我可以申請多種方法來單個對象:

With ITEM_RNG 
    .ClearContents 
    .ClearFormats 
    .ClearOutline 
End With 

不過,我有我想它申請一個方法多範圍對象:

ITEM_RNG.ClearContents 
VALUE_RNG.ClearContents 
SUM_RNG.ClearContents 

我試圖創建一個循環的對象數組,但它似乎比上述語法更復雜。有沒有辦法做到這一點,而不是明確地追加每個對象的.ClearContents?

現在,使用我所瞭解的聯合功能,我試圖採用以下方法,但沒有成功。

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

看來,即使有一個函數只需要一個範圍作爲它的輸入,並且是爲了清除內容,也不會接受一個union作爲它的參數。爲什麼不能通過工會? – teepee

相關問題