set ranges in Excel using VBA

Posted on 2015-02-19
Last Modified: 2016-02-10
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
Question by:Jagwarman
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
  • 2
  • +1
LVL 30

Expert Comment

ID: 40618405
must remain the same like AB1:AB64000 ? or adapt to maximum in the workbook ?

If the same range you do

if you want it to be floating you do

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.

LVL 51

Accepted Solution

Rgonzo1971 earned 250 total points
ID: 40618408

pls try

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

LVL 30

Assisted Solution

gowflow earned 250 total points
ID: 40618410
as far as your example pls try
ActiveWorkbook.Names.Add Name:="AB", RefersTo:="='Raw Data'!R[1]C28:R[64000]C28"


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

SharePoint Admin?

Enable Your Employees To Focus On The Core With Intuitive Onscreen Guidance That is With You At The Moment of Need.

LVL 12

Expert Comment

ID: 40618424
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

Author Comment

ID: 40618431
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!
LVL 30

Expert Comment

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


Author Comment

ID: 40618454
Hi Rgonzo I just notices the $ was missing so it does work

Author Comment

ID: 40618455
Far West thanks for your reply but I prefer the others
LVL 12

Expert Comment

ID: 40618461
You are welcome, and glad your problem is solved
see you in next question  :)

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Excel VBA inserting a formula 12 38
Microsoft Access 32-bit or 64-bit? 11 58
copy down array 24 32
Resolving #VALUE error in spreadsheet 2 20
Since upgrading to Office 2013 or higher installing the Smart Indenter addin will fail. This article will explain how to install it so it will work regardless of the Office version installed.
Use Windows Task Scheduler to print a Word document weekly so your printer ink won't dry out.
The viewer will learn how to use the =DISCRINV command to create a discrete random variable, use this command to model a set of probabilities and outcomes in a Monte Carlo simulation, and learn how to find the standard deviation of a set of probabil…
Graphs within dashboards are meant to be dynamic, representing data from a period of time that will change each time the dashboard is updated with new data. Rather than update each graph to point to a different set within a static set of data, t…

734 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question