Function SheetName(Optional ByVal rng As Range) As String
Application.Volatile
If rng Is Nothing Then Set rng = Application.Caller
SheetName = rng.Parent.Name
End Function
=SheetName()
The workbook does not have be saved first.
But the native function Peo posted works a little faster and who would want
to know the sheetname in an unsaved file?