Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 16
Default Problem referring to a particular sheet in VBA

I need to reference cells in VBA using sheet-level names, which I have
set up using Name Manager. But I ran into some troubles, so I tried to
boil it down to figure it out. I have arrived at the situation below,
and I am baffled as to why this doesn't work:

For i = 1 To Sheets.Count
Debug.Print "Sheet " & i & " is named """ & Sheets(i).Name &
""""
Debug.Print Range("'" & Sheets(i).Name & "'!A1").Address
Next i

I get:
Sheet 1 is named "Current"
$A$1
Sheet 2 is named "Past"
**error here**

Runtime error '1004':
Method 'Range' of object '_Worksheet' failed

I tried it with and without the apostrophes to delimit the sheet name.
I even copied the Current sheet into a new workbook in case there was
some hidden corruption. No luck.

Any ideas? What am I missing?

Thanks
tbone
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default Problem referring to a particular sheet in VBA

I'd use:

Debug.print sheets(i).range("A1").address(external:=true)

This will include the workbook, worksheet and address.

===
If your code is in a general module, then I would think it would work -- if all
the sheets are worksheets.

But if your code is behind a worksheet, you could also try:

debug.print application.range("'" & ....



tbone wrote:

I need to reference cells in VBA using sheet-level names, which I have
set up using Name Manager. But I ran into some troubles, so I tried to
boil it down to figure it out. I have arrived at the situation below,
and I am baffled as to why this doesn't work:

For i = 1 To Sheets.Count
Debug.Print "Sheet " & i & " is named """ & Sheets(i).Name &
""""
Debug.Print Range("'" & Sheets(i).Name & "'!A1").Address
Next i

I get:
Sheet 1 is named "Current"
$A$1
Sheet 2 is named "Past"
**error here**

Runtime error '1004':
Method 'Range' of object '_Worksheet' failed

I tried it with and without the apostrophes to delimit the sheet name.
I even copied the Current sheet into a new workbook in case there was
some hidden corruption. No luck.

Any ideas? What am I missing?

Thanks
tbone


--

Dave Peterson
  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 245
Default Problem referring to a particular sheet in VBA

To get the name you need to use '.Name' rather than '.Address'. I get no
error using your code but get the same error when using '.Name' when no name
exists in the relevant sheet-range.


For i = 1 To Sheets.Count
Debug.Print "Sheet " & i & " is named """ & Sheets(i).Name & """"
Debug.Print Range("'" & Sheets(i).Name & "'!A1").Name
Next i


The following will debug.print all names:

Sub WBNames()
For Each n In ActiveWorkbook.Names
Debug.Print n
Next n
End Sub


HTH

--
Steve

"tbone" wrote in message
...
I need to reference cells in VBA using sheet-level names, which I have
set up using Name Manager. But I ran into some troubles, so I tried to
boil it down to figure it out. I have arrived at the situation below,
and I am baffled as to why this doesn't work:

For i = 1 To Sheets.Count
Debug.Print "Sheet " & i & " is named """ & Sheets(i).Name &
""""
Debug.Print Range("'" & Sheets(i).Name & "'!A1").Address
Next i

I get:
Sheet 1 is named "Current"
$A$1
Sheet 2 is named "Past"
**error here**

Runtime error '1004':
Method 'Range' of object '_Worksheet' failed

I tried it with and without the apostrophes to delimit the sheet name.
I even copied the Current sheet into a new workbook in case there was
some hidden corruption. No luck.

Any ideas? What am I missing?

Thanks
tbone


  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default Problem referring to a particular sheet in VBA

Actually, I think you'd need:

Debug.Print Range("'" & Sheets(i).Name & "'!A1").Name.Name

And that will fail if A1 isn't named.

You could ignore the error:

on error resume next
Debug.Print Range("'" & Sheets(i).Name & "'!A1").Name.Name
on error goto 0

or use a variable:

dim myName as string
myName = ""
on error resume next
myname = Range("'" & Sheets(i).Name & "'!A1").Name.Name
on error goto 0

if myName = "" then
debug.print "no name here!"
else
debug.print myname
end if



AltaEgo wrote:

To get the name you need to use '.Name' rather than '.Address'. I get no
error using your code but get the same error when using '.Name' when no name
exists in the relevant sheet-range.

For i = 1 To Sheets.Count
Debug.Print "Sheet " & i & " is named """ & Sheets(i).Name & """"
Debug.Print Range("'" & Sheets(i).Name & "'!A1").Name
Next i

The following will debug.print all names:

Sub WBNames()
For Each n In ActiveWorkbook.Names
Debug.Print n
Next n
End Sub

HTH

--
Steve

"tbone" wrote in message
...
I need to reference cells in VBA using sheet-level names, which I have
set up using Name Manager. But I ran into some troubles, so I tried to
boil it down to figure it out. I have arrived at the situation below,
and I am baffled as to why this doesn't work:

For i = 1 To Sheets.Count
Debug.Print "Sheet " & i & " is named """ & Sheets(i).Name &
""""
Debug.Print Range("'" & Sheets(i).Name & "'!A1").Address
Next i

I get:
Sheet 1 is named "Current"
$A$1
Sheet 2 is named "Past"
**error here**

Runtime error '1004':
Method 'Range' of object '_Worksheet' failed

I tried it with and without the apostrophes to delimit the sheet name.
I even copied the Current sheet into a new workbook in case there was
some hidden corruption. No luck.

Any ideas? What am I missing?

Thanks
tbone


--

Dave Peterson
  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 245
Default Problem referring to a particular sheet in VBA

Oops! Forgot a .Name. Thank you Dave and sorry tbone.
Without the additional .Name, it produces an address (but crashes unless a
name exists).
With the additional .Name it produces a name or crashes if the name does not
exist.

--
Steve

"Dave Peterson" wrote in message
...
Actually, I think you'd need:

Debug.Print Range("'" & Sheets(i).Name & "'!A1").Name.Name

And that will fail if A1 isn't named.

You could ignore the error:

on error resume next
Debug.Print Range("'" & Sheets(i).Name & "'!A1").Name.Name
on error goto 0

or use a variable:

dim myName as string
myName = ""
on error resume next
myname = Range("'" & Sheets(i).Name & "'!A1").Name.Name
on error goto 0

if myName = "" then
debug.print "no name here!"
else
debug.print myname
end if



AltaEgo wrote:

To get the name you need to use '.Name' rather than '.Address'. I get no
error using your code but get the same error when using '.Name' when no
name
exists in the relevant sheet-range.

For i = 1 To Sheets.Count
Debug.Print "Sheet " & i & " is named """ & Sheets(i).Name & """"
Debug.Print Range("'" & Sheets(i).Name & "'!A1").Name
Next i

The following will debug.print all names:

Sub WBNames()
For Each n In ActiveWorkbook.Names
Debug.Print n
Next n
End Sub

HTH

--
Steve

"tbone" wrote in message
...
I need to reference cells in VBA using sheet-level names, which I have
set up using Name Manager. But I ran into some troubles, so I tried to
boil it down to figure it out. I have arrived at the situation below,
and I am baffled as to why this doesn't work:

For i = 1 To Sheets.Count
Debug.Print "Sheet " & i & " is named """ & Sheets(i).Name &
""""
Debug.Print Range("'" & Sheets(i).Name & "'!A1").Address
Next i

I get:
Sheet 1 is named "Current"
$A$1
Sheet 2 is named "Past"
**error here**

Runtime error '1004':
Method 'Range' of object '_Worksheet' failed

I tried it with and without the apostrophes to delimit the sheet name.
I even copied the Current sheet into a new workbook in case there was
some hidden corruption. No luck.

Any ideas? What am I missing?

Thanks
tbone


--

Dave Peterson




  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 16
Default Problem referring to a particular sheet in VBA

On Mon, 18 May 2009 20:28:34 -0500, Dave Peterson
wrote:

If your code is in a general module, then I would think it would work -- if all
the sheets are worksheets.

But if your code is behind a worksheet, you could also try:

debug.print application.range("'" & ....


Due to laziness I guess, my code was in one of the worksheets. When I
tested out everyone's suggestions, I happened to put the code in a
handy module and it all worked.

Your suggestion of "Application.Range" also worked fine in the
spreadsheet code.

I think my lesson here is to be more diligent with putting code in the
proper place. I figure this kind of general code should be in a
module.

Thanks for all the help
tbone
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Referring to the only sheet Otto Moehrbach Excel Programming 3 April 5th 07 05:11 PM
Formula referring to a different sheet luvthavodka Excel Discussion (Misc queries) 1 November 12th 06 10:05 PM
Referring to a sheet Virginia Excel Programming 2 April 10th 05 02:50 PM
referring to previous sheet Iolao Excel Discussion (Misc queries) 3 November 26th 04 08:40 PM
problem referring to Range and Cells Kevin Excel Programming 8 February 28th 04 01:05 AM


All times are GMT +1. The time now is 06:40 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"