How to use the column of a named range

Upex

Board Regular
Joined
Dec 29, 2010
Messages
197
Office Version
  1. 365
Platform
  1. Windows
Hi All,

I'm trying to replace a quoted column reference with reference to the column of a named range so if the column position changes it doesn't need the code updated, but cannot get anything I've tried to work...

I currently use:
sColumn = "J" (with sColumn dim as string)

and then use that later as part of variable ranges... Range(Range(sColumn & 3), Range(sColumn & Sheet1.Rows.Count).End(xlUp)) fashion.

Column J:J is named 'detail' so I'm trying to use something like:
sColumn = range("detail").column

but cannot get anything I've tried to work. Any ideas?

Thanks in advance!
 

Excel Facts

Excel Joke
Why can't spreadsheets drive cars? They crash too often!
Note that:
VBA Code:
range("detail").column
will return the column INDEX (numeric) of the column, NOT the column letter!
So, if "detail" was column J, that expression above would return 10, not "J", as column J is the 10th column (J is the 10th letter).

Then, if referencing your ranges, instead of using RANGE, which requires column references to be letters, you can use CELLS, in which column references can be numeric or letters.
The format of CELLS is:
Cells(row, column)

So if you wanted to return the range reference for "sColumn" in the 3rd row, that would look like:
VBA Code:
Cells(3, sColumn)
 
Last edited:
Upvote 0
I think it should be:
Cells(row, column)
Example:
Debug.Print Cells(1, 5).Address 'returns $E$1
You are 100% correct (apparently, I was suffering from some Excel-dyslexia this morning)!
I went back and edited my previous post to reflect correct information.

Thanks for catching that!
 
Upvote 0
Thank you all, that makes a bit of sense, I think.

But how would I use 'cells' to get just the column ("J" until it moves)?

sColumn =
Cells("detail").Column
Cells(0, "detail").column
Cells(1,"detail").column
Cells(1, "detail")
Cells(1, "detail").address.column

all give me mismatch errors (declared as Long)
 
Upvote 0
Combine what you had before:

VBA Code:
Dim sColumn as Long
sColumn = Range("detail").Column

Then you can use:
VBA Code:
Cells(1, sColumn)
 
Upvote 0
Solution
Thanks Joe4,

So use the cells() within the range setting rather then setting the column 'value'...

VBA Code:
dim sColumn as long
sColumn = Range("detail").column

Range(Cells(3, sColumn), Cells(Sheet1.Rows.Count, sColumn).End(xlUp))

seems to work as needed - many thanks everyone, much appreciated.
 
Upvote 0

Forum statistics

Threads
1,224,734
Messages
6,180,631
Members
452,991
Latest member
JM_000888

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top