View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
Rick Rothstein Rick Rothstein is offline
external usenet poster
 
Posts: 5,934
Default Pass on cell address to an UDF?

Try this UDF...

Function CellTell()
CellTell = Application.Caller.Address
End Function

This returns an absolute address. If you want the ability to specify the
absolute/relative addressing mode, then here is a more general function...

Function CellTell(Optional ColAbsolute = True, Optional RowAbsolute = True)
CellTell = Application.Caller.Address(RowAbsolute, ColAbsolute)
End Function

So, if you wanted a fully relative address, you would use this UDF call...

=CellTell(FALSE,FALSE)

--
Rick (MVP - Excel)


"Charlotte E" <@ wrote in message
...
AltaEgo wrote:
Using inbuilt functions in cells:

=IF(ADDRESS(ROW(),COLUMN())="$C$4","Explosive Cell","Harmless")

Expand on this and pass some parameters if you need it in a UDF:

Function CELLTELL(addr)
'use this way in cell
' =CELLTELL(ADDRESS(ROW(),COLUMN()))

CELLTELL = "Harmless cell"
If addr = "$C$4" Then CELLTELL = "Explosive cell"

End Function



Thanks, but that's the whole point: I was kind of hoping to be able to
avoid the ADDRESS(ROW(),COLUMN()), and just use =CELLTELL().

I was hoping that VBA had a way of 'reading' what cell the function was
located in?

Actually, just lige =ROW()
Somehow that function must be able to 'read' what cell it is located in?

Anyone know how to do this?


TIA,













"Charlotte E" <@ wrote in message
...
Is it possible to pass on the cell, in which an UDF is located, to
the UDF itself?


Example:

In cell C4, I have an UDF, like:

=CELLTELL()

...and the UDF could return something like:

Function CELLTELL()

If Celladdress = "C4" Then
CELLTELL = "Explosive cell!"
Else
CELLTELL = "Harmless cell"
End If

End Function


Hope you get the picture...


Thanks,