Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 418
Default How to pass cell reference to VBA function?

I want to define something like:

function mycell(ref)
mycell = range(ref).something
end function

That works if I call it from a spreadsheet formula
in the form mycell("A1"). But I want to call it in
the form mycell(A1) -- no quotes -- so that mycell()
is recomputed if A1 changes.

How can I do that? That is, how do I declare "ref",
and/or how do I pass A1 so that it can be used in
the VBA range() function, without passing "A1" as
a string?

Note: I am using Office Excel 2003, if that matters.
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 101
Default How to pass cell reference to VBA function?

Hi there,

Declare it as a Range variable..

Function MyCell(rngRef As Range) As Variant
MyCell = rngRef.Address
MyCell = rngRef.Formula
MyCell = rngRef.Value
End Function

Or use whatever parameter you want. You couuld use a Variant instead of a
Range which should use both. It gets a little trickier when trying to code
for it though, but is used that way quite a bit.

HTH

--
Regards,
Zack Barresse, aka firefytr
To email, remove NOSPAM


" wrote
in message ...
I want to define something like:

function mycell(ref)
mycell = range(ref).something
end function

That works if I call it from a spreadsheet formula
in the form mycell("A1"). But I want to call it in
the form mycell(A1) -- no quotes -- so that mycell()
is recomputed if A1 changes.

How can I do that? That is, how do I declare "ref",
and/or how do I pass A1 so that it can be used in
the VBA range() function, without passing "A1" as
a string?

Note: I am using Office Excel 2003, if that matters.



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 11,058
Default How to pass cell reference to VBA function?

You need the double quotes because you are passing in a string. Something
like:

Function plus1(r As Range) As Long
plus1 = r.Value + 1
End Function

will allow you to use =plus1(A1) in the worksheet.
--
Gary's Student


" wrote:

I want to define something like:

function mycell(ref)
mycell = range(ref).something
end function

That works if I call it from a spreadsheet formula
in the form mycell("A1"). But I want to call it in
the form mycell(A1) -- no quotes -- so that mycell()
is recomputed if A1 changes.

How can I do that? That is, how do I declare "ref",
and/or how do I pass A1 so that it can be used in
the VBA range() function, without passing "A1" as
a string?

Note: I am using Office Excel 2003, if that matters.

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 101
Default How to pass cell reference to VBA function?

Gary's Student,

They are actually passing it as a Variant. But using it as
Range(ref).Something will assume it as a string. They could use
ref.Something and it would work the other way. Maybe a more prolific way
would be ...

Function MyCell(ref As Variant) As Variant
If TypeName(ref) = "String" Then
MyCell = Range(ref).Value
ElseIf TypeName(ref) = "Range" Then
MyCell = ref.Value
End If
End Function

HTH

--
Regards,
Zack Barresse, aka firefytr
To email, remove NOSPAM



"Gary''s Student" wrote in message
...
You need the double quotes because you are passing in a string. Something
like:

Function plus1(r As Range) As Long
plus1 = r.Value + 1
End Function

will allow you to use =plus1(A1) in the worksheet.
--
Gary's Student


" wrote:

I want to define something like:

function mycell(ref)
mycell = range(ref).something
end function

That works if I call it from a spreadsheet formula
in the form mycell("A1"). But I want to call it in
the form mycell(A1) -- no quotes -- so that mycell()
is recomputed if A1 changes.

How can I do that? That is, how do I declare "ref",
and/or how do I pass A1 so that it can be used in
the VBA range() function, without passing "A1" as
a string?

Note: I am using Office Excel 2003, if that matters.



  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 418
Default How to pass cell reference to VBA function?

"Zack Barresse" wrote:
Function MyCell(rngRef As Range) As Variant
[....]
MyCell = rngRef.Formula


Klunk! I had tried "ref as Range", but I thought it
did not work because "msgbox ref" displayed the
value instead of the address. I guess "ref" alone
defaults to ref.Value. Klunk!

Thanks for a clear and succinct explanation.


  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 11,058
Default How to pass cell reference to VBA function?

Good suggestion Zack, makes the code a little more bullet-proof.
--
Gary''s Student


"Zack Barresse" wrote:

Gary's Student,

They are actually passing it as a Variant. But using it as
Range(ref).Something will assume it as a string. They could use
ref.Something and it would work the other way. Maybe a more prolific way
would be ...

Function MyCell(ref As Variant) As Variant
If TypeName(ref) = "String" Then
MyCell = Range(ref).Value
ElseIf TypeName(ref) = "Range" Then
MyCell = ref.Value
End If
End Function

HTH

--
Regards,
Zack Barresse, aka firefytr
To email, remove NOSPAM



"Gary''s Student" wrote in message
...
You need the double quotes because you are passing in a string. Something
like:

Function plus1(r As Range) As Long
plus1 = r.Value + 1
End Function

will allow you to use =plus1(A1) in the worksheet.
--
Gary's Student


" wrote:

I want to define something like:

function mycell(ref)
mycell = range(ref).something
end function

That works if I call it from a spreadsheet formula
in the form mycell("A1"). But I want to call it in
the form mycell(A1) -- no quotes -- so that mycell()
is recomputed if A1 changes.

How can I do that? That is, how do I declare "ref",
and/or how do I pass A1 so that it can be used in
the VBA range() function, without passing "A1" as
a string?

Note: I am using Office Excel 2003, if that matters.




  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 101
Default How to pass cell reference to VBA function?

Yeah, it defaults to Value. Just like ..

Range("A1")

Defaults to ..

ActiveSheet.Range("A1")

And the same goes for the workbook. If not specified (and not required)
Excel will *assume* for you. That's why it's best, if there is a
possibility of going to another worksheet/book, to always explicitly qualify
your references.

Glad it works for you. :)

--
Regards,
Zack Barresse, aka firefytr
To email, remove NOSPAM


" wrote
in message ...
"Zack Barresse" wrote:
Function MyCell(rngRef As Range) As Variant
[....]
MyCell = rngRef.Formula


Klunk! I had tried "ref as Range", but I thought it
did not work because "msgbox ref" displayed the
value instead of the address. I guess "ref" alone
defaults to ref.Value. Klunk!

Thanks for a clear and succinct explanation.



Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
How to pass variables as arguments of a function Excel-craze Excel Worksheet Functions 1 August 12th 09 11:48 AM
Pass function as argument to UDF Ron Rosenfeld Excel Programming 10 February 9th 06 12:48 PM
pass cell value as string to function fybar Excel Programming 2 November 3rd 05 04:37 AM
How to pass sheet reference to a procedure djd Excel Programming 1 September 23rd 05 04:17 PM
How do I pass a worksheets name to function? Phillips Excel Programming 2 December 11th 03 12:19 PM


All times are GMT +1. The time now is 01:19 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"