将相同的方法应用于多个对象

时间:2014-04-07 20:35:52

标签: excel vba excel-vba

我很想知道是否有办法将相同的方法应用于多个对象。换句话说,我正在寻找某种东西,在某种程度上,它是" 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对象。有没有办法使这项工作,或联盟不适用于这里?

1 个答案:

答案 0 :(得分: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