2014-04-07 4 views
1

Мне любопытно узнать, существует ли способ применить один и тот же метод к нескольким объектам. Другими словами, я ищу что-то, что является, в некотором роде, обратным выражением «С».Применение того же метода для нескольких объектов

Я знаю, что с помощью «С» заявлением, я могу применить несколько методов для одного объекта:

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 

Где СЕРИЯ [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

Смежные вопросы