This site will look better if you upgrade to a browser that supports web standards.
While you can reference other sheets in XL formulae
=SUM(Sheet1!A1:A100)
the reference must be to a specific sheet. In some cases the need may arise to refer to a previous sheet by position, rather than by name. For instance, if Sheet3 is inserted between Sheet1 and Sheet2, you may want the reference to refer to Sheet3, rather than Sheet1.
This UDF will return a value from the previous sheet (working left to right). There are two calling methods. The first, with no arguments
=PrevSheet()
will refer to the cell(s) in the previous sheet with the same address as the cell(s) it's entered in.
The second method refers to whichever cells in the previous sheet are referenced by the argument:
=SUM(PrevSheet(A1:A100))
If the formula is entered in the left-most sheet, the UDF will returnt the #REF! error.
'******************************************************
'Purpose: Reference cell(s) on the previous sheet
'Inputs: rRng - optional range reference
'Returns: Range with same address as rRng on the sheet
' to the left of the calling sheet. If rRng not
' provided, the calling cell reference is used
'******************************************************
Public Function PrevSheet( _
Optional rRng As Excel.Range) As Variant
Dim nIndex As Integer
Application.Volatile
If rRng Is Nothing Then Set rRng = Application.Caller
nIndex = rRng.Parent.Index
If nIndex > 1 Then
Set PrevSheet = Sheets(nIndex- 1).Range(rRng.Address)
Else
PrevSheet = CVErr(xlErrRef)
End If
End Function
This page last updated
© Copyright 2001 - 2004 McGimpsey and Associates. Except where noted, all code on this site may be distributed under the Gnu GPL. Acknowledgement is appreciated.
Not familiar with User Defined Functions (UDFs)? See David McRitchie's Getting Started With Macros
About Event Macros>