[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 146
  • Last Modified:

set ranges in Excel using VBA

I have a spreadsheet that has numerous set named ranges, so in Name Manager for instance I would like to call row AB, AB and the range I need is   ='Raw Data'!$AB1:$AB64000 [I have 17 Ranges I need to set]

I have tried to make this work through VBA but failed miserably. I tried

ActiveWorkbook.Names("AB").RefersToR1C1 = "='Raw Data'!R[1]C28:R[64000]C28"

but when I ran this it returned an error "Application defined or object defined error"

Is there a way to get VBA to put these ranges in and make sure that when the new data is entered in the Raw Data sheet, the ranges do not change.

I say that because when I set up the ranges manually in Name Manager every time I put data in the Raw Data sheet the ranges did change. i.e. when I run the macro the first time the Raw data tab may have 1000 items next time 20000 items next time 50000 items. So that is why the ranges must remain the same every time.

here's hoping
0
Jagwarman
Asked:
Jagwarman
  • 3
  • 3
  • 2
  • +1
2 Solutions
 
gowflowCommented:
must remain the same like AB1:AB64000 ? or adapt to maximum in the workbook ?

If the same range you do
$AB$1:$AB$64000

if you want it to be floating you do
AB1:AB64000

Now as far as VBA I can help you with that but better if you post a workbook that have these names and will take it from there.

gowflow
0
 
Rgonzo1971Commented:
Hi,

pls try

ActiveWorkbook.Names.Add Name:="AB", RefersTo:="='Raw Data'!$AB1:$AB64000"

Regards
0
 
gowflowCommented:
as far as your example pls try
ActiveWorkbook.Names.Add Name:="AB", RefersTo:="='Raw Data'!R[1]C28:R[64000]C28"

or

 ActiveWorkbook.Names.Add Name:="AB", RefersTo:="='Raw Data'!$AB$1:$AB$64000"

gowflow
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
FarWestCommented:
I think the best way is to have a sheet that defines all ranges needed as stings
for example in Z1 = put the values "$AB$1:$AB$64000" in Z2 you put the values "$AC$1:$AC$64000" and so on

then you define names using Names Manager by putting "=INDIRECT($Z$1)" in Refers to
this way you have named that can be dynamically modified using other cells values
0
 
JagwarmanAuthor Commented:
Hi Rgonzo thought you had left EE?

When I run your the first time it works fine. When I run it the second tome it moves the range to

='Raw Data'!$AB14:$AB64013 and the next time to

='Raw Data'!$AB20:$AB64019

bizzare eh!
0
 
gowflowCommented:
for it not to change it need to be absolute values again
ActiveWorkbook.Names.Add Name:="AB", RefersTo:="='Raw Data'!$AB$1:$AB$64000"

gowflow
0
 
JagwarmanAuthor Commented:
Hi Rgonzo I just notices the $ was missing so it does work
0
 
JagwarmanAuthor Commented:
Far West thanks for your reply but I prefer the others
0
 
FarWestCommented:
You are welcome, and glad your problem is solved
see you in next question  :)
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

  • 3
  • 3
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now