Home » excel » excel – Applying same method to multiple objects

excel – Applying same method to multiple objects

Posted by: admin May 14, 2020 Leave a comment

Questions:

I am curious to know whether there is a way to apply the same method to multiple objects. In other words, I’m looking for something that is, in a way, the inverse of a “With” statement.

I know that using “With” statements, I can apply multiple methods to a single object:

With ITEM_RNG
    .ClearContents
    .ClearFormats
    .ClearOutline
End With

However, I have multiple range objects to which I would like to apply a single method:

ITEM_RNG.ClearContents
VALUE_RNG.ClearContents
SUM_RNG.ClearContents

I have tried to create an array of objects to loop with, but it appears to be more convoluted than the above syntax. Is there an way to do this without explicitly appending .ClearContents to each object individually?

Now, using what I’ve learned about the Union function, I have tried to employ the following, without success.

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

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

Where SERIES[1-3]_BOX are MSForms.ListBox objects. Is there a way to make this work, or does Union not apply here?

How to&Answers:

You can use Application.Union (assuming that all your ranges in the same sheet):

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

or like this:

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