ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Worksheet Functions (https://www.excelbanter.com/excel-worksheet-functions/)
-   -   Return number of current sheet (https://www.excelbanter.com/excel-worksheet-functions/23507-return-number-current-sheet.html)

Brandon

Return number of current sheet
 
I'm looking for a way to create a function to return the current sheet youre
working in. Not its name (Ive found that function), but the number of the
sheet. Example: if you have a total of 8 sheets, and youre working on the
3rd sheet, Id like to return the number 3 in a certain cell on the third
sheet, 4 on the fourth sheet, 5 on the fifth sheet, etc., and have those
numbers update if sheets are added or deleted. Is that possible?



JE McGimpsey

One way:

Public Function SheetNum(Optional rng As Range) As Variant
Application.Volatile
If rng Is Nothing Then
If TypeName(Application.Caller) = "Range" Then
Set rng = Application.Caller.Cells
Else
SheetNum = CVErr(xlErrRef)
Exit Function
End If
End If
SheetNum = rng.Parent.Index
End Function

usage:

=SheetNum()

or

=SheetNum(MySheet!A1)


note that this will not automatically update when a sheet is moved
within a workbook - Application.Volatile will cause it to update the
next time a calculation is made.


In article ,
"Brandon" wrote:

I'm looking for a way to create a function to return the current sheet youre
working in. Not its name (Ive found that function), but the number of the
sheet. Example: if you have a total of 8 sheets, and youre working on the
3rd sheet, Id like to return the number 3 in a certain cell on the third
sheet, 4 on the fourth sheet, 5 on the fifth sheet, etc., and have those
numbers update if sheets are added or deleted. Is that possible?


Brandon

Thanks very much. That worked just fine!

"JE McGimpsey" wrote:

One way:

Public Function SheetNum(Optional rng As Range) As Variant
Application.Volatile
If rng Is Nothing Then
If TypeName(Application.Caller) = "Range" Then
Set rng = Application.Caller.Cells
Else
SheetNum = CVErr(xlErrRef)
Exit Function
End If
End If
SheetNum = rng.Parent.Index
End Function

usage:

=SheetNum()

or

=SheetNum(MySheet!A1)


note that this will not automatically update when a sheet is moved
within a workbook - Application.Volatile will cause it to update the
next time a calculation is made.


In article ,
"Brandon" wrote:

I'm looking for a way to create a function to return the current sheet you€„¢re
working in. Not it€„¢s name (I€„¢ve found that function), but the number of the
sheet. Example: if you have a total of 8 sheets, and you€„¢re working on the
3rd sheet, I€„¢d like to return the number 3 in a certain cell on the third
sheet, 4 on the fourth sheet, 5 on the fifth sheet, etc., and have those
numbers update if sheets are added or deleted. Is that possible?



Harlan Grove

"JE McGimpsey" wrote...
....
If TypeName(Application.Caller) = "Range" Then
Set rng = Application.Caller.Cells

....

Why TypeName(x) = "y" rather than TypeOf x Is y? Also, when the condition is
true, won't Application.Caller.Parent resolve to the same worksheet as
Application.Caller.Cells.Parent? If so, why use .Cells?




All times are GMT +1. The time now is 08:28 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com