ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Dynamically creating Non-Contigous Ranges (https://www.excelbanter.com/excel-programming/373086-dynamically-creating-non-contigous-ranges.html)

[email protected]

Dynamically creating Non-Contigous Ranges
 
I've got a function that identifies certain ranges that have formulas
in them and them fills them down to a certain level. Right now, I'm
getting really poor performance since I'm doing something like this:

For each rng in rngList
rng.FillDown
Next

It seems that if I do each range individually, it takes about 20-30
times longer than if I do all the ranges at once.

In the current example I'm working with, I have 20 different ranges
that need formulas filled down. When I do a multi-select & fill the
entire multi-select, it goes VERY fast.

So, I tried to build a range in the following manner:

For each rng in rngList
If strRngAddresses = "" Then
strRngAddresses = rng.Address
Else
strRngAddresses = strRngAddresses & "," & rng.Address
End If
Next

Range(strRngAddresses).FillDown

This method is very fast & it works as long as their are 14 or fewer
ranges. If there are more than 14 ranges, it fails with an error
"Method 'Range' of object '_Global' Failed.

So, is there a fast way to fill down many ranges that aren't continous?
I tried messing around with Areas, but I don't see a method for adding
an area to an existing range. Maybe I'm making this too complicated


Tom Ogilvy

Dynamically creating Non-Contigous Ranges
 
Dim rng1 as Range
For each rng in rngList
If rng1 is nothing Then
set rng1 = rng
Else
set rng1 = Union(rng1,rng)
End If
Next

rng1.Filldown

--
Regards,
Tom Ogilvy

wrote in message
oups.com...
I've got a function that identifies certain ranges that have formulas
in them and them fills them down to a certain level. Right now, I'm
getting really poor performance since I'm doing something like this:

For each rng in rngList
rng.FillDown
Next

It seems that if I do each range individually, it takes about 20-30
times longer than if I do all the ranges at once.

In the current example I'm working with, I have 20 different ranges
that need formulas filled down. When I do a multi-select & fill the
entire multi-select, it goes VERY fast.

So, I tried to build a range in the following manner:

For each rng in rngList
If strRngAddresses = "" Then
strRngAddresses = rng.Address
Else
strRngAddresses = strRngAddresses & "," & rng.Address
End If
Next

Range(strRngAddresses).FillDown

This method is very fast & it works as long as their are 14 or fewer
ranges. If there are more than 14 ranges, it fails with an error
"Method 'Range' of object '_Global' Failed.

So, is there a fast way to fill down many ranges that aren't continous?
I tried messing around with Areas, but I don't see a method for adding
an area to an existing range. Maybe I'm making this too complicated





All times are GMT +1. The time now is 07:27 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com