View Single Post
  #16   Report Post  
Posted to microsoft.public.excel.programming
JMB JMB is offline
external usenet poster
 
Posts: 2,062
Default Sheet Offset - is this possible? - Problem

Good luck. Now that I've had some shuteye myself (and thinking more
clearly), if you want the function to show as a formula in Excel, do as Dick
suggested. If you want to do strictly in VBA use:

MsgBox Worksheets(ActiveSheet.Index + 1).Range("A1")

This would give you the flexibility to use a point of reference other than
the Activesheet (Say Sheet3.Index+1 -note I'm using the codename for the
sheet). The SHEETOFFSET function as I've modified assumes the activesheet is
the point of reference. Mr. Walkenbach probably did not design the function
to be called from either a worksheet or VBA because with VBA there's an
easier way.

I've got to catch a plane (literally) -so don't think me rude if I don't
post back today.



"MichaelC" wrote:

JMB, Vasant, Steve and Dick - thank you all very much. I will implement all
your valuable advice tomorrow after a little shuteye. I'd have given up a
long time ago were it not for your thoughtful patience.

"JMB" wrote:

Note in my previous post that I made changes to the function code. Copy and
paste into your module.


"MichaelC" wrote:

Thanks for staying with me, JMB.
I'm not using quotes. I'm doing something else wrong.
I copied and pasted the function into a fresh worksheet under VBA Project /
Excel objects / ThisWorkbook.
Then I wrote:
Sub Test()
ActiveCell = SHEETOFFSET(1, A1)
End Sub

When I ran the Sub Test I got Run-time error 424 - Object required.

What did I do different from you when you successfully tested it?
I appreciate your patience.


"JMB" wrote:

I copied the code in exactly as you posted it and no problems.
Unfortunately, I'm unable to duplicate your error, even with option explicit.

For the range reference, are you using quotes or not?

=SHEETOFFSET(3,"A1")

or

=SHEETOFFSET(3,A1)

It has to be entered w/o quotes.

If you had to declare the argument variable types,

Function SHEETOFFSET(offset as integer, Ref as range) as variant


"MichaelC" wrote:

The function formula from J-Walk is:
Function SHEETOFFSET(offset, Ref)
' Returns cell contents at Ref, in sheet offset
Application.Volatile
With Application.Caller.Parent
SHEETOFFSET = .Parent.Sheets(.Index + offset) _
.Range(Ref.Address).Value
End With
End Function

I cannot get this to work, probably due to some basic misconception I have.
I get Run Time Error 424 ( text following a dot is not recognized as object)

Is this something to do with Option Explicit? If that means I have to
declare my variables, what needs to be done?
I apologise for what I know are elementary questions.


"MichaelC" wrote:

Thank you both, gentlemen. The J-Walk reference is exactly where I had
originally seen the reference. Still strange that VBA help, nor for that
matter John Walkenbach's excellent Power Programming book seems to make any
reference to this extremely useful tool!

"JMB" wrote:

Try this link

http://j-walk.com/ss/excel/tips/tip63.htm

"MichaelC" wrote:

Is there such an animal as Sheet Offset (# of Sheets).
I once made a note when I saw it but now can find no references to it
anywhere.
Thanks in advance for all advice