Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 11
Default custom function - with built-in function

Hi,

I have a small excel function that returns the background color value of a
cell:

Function ColorOfCell(cellaneve As Range)

Dim CellColor As Integer

CellColor = cellaneve.Interior.ColorIndex
ColorOfCell = CellColor

End Function

That's ok. Works from excel like =ColorOfCell(A1)
But how can I make it work to use with built-in functions?

Like:
=ColorOfCell(HLOOKUP($A$1;Personal!$B$20:$Q$51;J6; FALSE))

Is there any general solution to do this?

Marton


  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,253
Default custom function - with built-in function



functions like index and offset will return a reference,
but the lookup functions return a value.

so:
either reconstruct your lookup with match and index.
or:
create a new function (with more arguments)
that incorporates the vlookup inside VBA


--
keepITcool
| www.XLsupport.com | keepITcool chello nl | amsterdam


VilMarci wrote :

Hi,

I have a small excel function that returns the background color value
of a cell:

Function ColorOfCell(cellaneve As Range)

Dim CellColor As Integer

CellColor = cellaneve.Interior.ColorIndex
ColorOfCell = CellColor

End Function

That's ok. Works from excel like =ColorOfCell(A1)
But how can I make it work to use with built-in functions?

Like:
=ColorOfCell(HLOOKUP($A$1;Personal!$B$20:$Q$51;J6; FALSE))

Is there any general solution to do this?

Marton

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 11
Default custom function - with built-in function

Hi,

Thanks for the reply :)

Found an other way that should work, but...

ADDRESS(L4;$K$4;1;TRUE;"Personal") returns Personal!B21
ColorOfCell(Personal!B21) returns 3

BUT

colorofcell(ADDRESS(L4;$K$4;1;TRUE;"Personal"))
Gives "VALUE!" error message :(

Why not working?

Marton


"keepITcool" wrote in message
ft.com...


functions like index and offset will return a reference,
but the lookup functions return a value.

so:
either reconstruct your lookup with match and index.
or:
create a new function (with more arguments)
that incorporates the vlookup inside VBA


--
keepITcool
| www.XLsupport.com | keepITcool chello nl | amsterdam


VilMarci wrote :

Hi,

I have a small excel function that returns the background color value
of a cell:

Function ColorOfCell(cellaneve As Range)

Dim CellColor As Integer

CellColor = cellaneve.Interior.ColorIndex
ColorOfCell = CellColor

End Function

That's ok. Works from excel like =ColorOfCell(A1)
But how can I make it work to use with built-in functions?

Like:
=ColorOfCell(HLOOKUP($A$1;Personal!$B$20:$Q$51;J6; FALSE))

Is there any general solution to do this?

Marton



  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 11,272
Default custom function - with built-in function

Marton,

You function is being passed a range as its argument. HLOOKUP returns the
cell value, not the cell, so they have a basic dilemma.

You need to use a different function. MATCH will get you the column that A1
is in,

MATCH($A$1,$B$20:$B$51,0)

and INDEX can return the reference at the intersection of a column and a row

INDEX($B$20:$Q$51,J6, the_col)

Join them together and integrate with your function, and you get

=colorofcell(INDEX($B$20:$Q$51,J6,MATCH($A$1,$B$20 :$B$51,0)))

But also note that there is a basic problem with your function, in that it
will not update automatically if the cell colour is changed, you will need
to force a recalculation of the value with F9.


--

HTH

RP
(remove nothere from the email address if mailing direct)


"VilMarci" wrote in message
...
Hi,

I have a small excel function that returns the background color value of a
cell:

Function ColorOfCell(cellaneve As Range)

Dim CellColor As Integer

CellColor = cellaneve.Interior.ColorIndex
ColorOfCell = CellColor

End Function

That's ok. Works from excel like =ColorOfCell(A1)
But how can I make it work to use with built-in functions?

Like:
=ColorOfCell(HLOOKUP($A$1;Personal!$B$20:$Q$51;J6; FALSE))

Is there any general solution to do this?

Marton




  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,253
Default custom function - with built-in function



almost there..
Address returns a STRING, you need a reference.
try colorofcell(indirect(address



--
keepITcool
| www.XLsupport.com | keepITcool chello nl | amsterdam


VilMarci wrote :



  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 430
Default custom function - with built-in function

"functions like index and offset will return a reference,
but the lookup functions return a value."

Usage of the above has always confused me.
Clearly tell me the difference in "reference" and "value".
All I can presently say is that reference might be "B4",
whereby the value in B4 might be "100" or "testing".
I'm a bit more confused with the reference-side.
TIA,



"keepITcool" wrote in message
ft.com...


functions like index and offset will return a reference,
but the lookup functions return a value.

so:
either reconstruct your lookup with match and index.
or:
create a new function (with more arguments)
that incorporates the vlookup inside VBA


--
keepITcool
| www.XLsupport.com | keepITcool chello nl | amsterdam


VilMarci wrote :

Hi,

I have a small excel function that returns the background color value
of a cell:

Function ColorOfCell(cellaneve As Range)

Dim CellColor As Integer

CellColor = cellaneve.Interior.ColorIndex
ColorOfCell = CellColor

End Function

That's ok. Works from excel like =ColorOfCell(A1)
But how can I make it work to use with built-in functions?

Like:
=ColorOfCell(HLOOKUP($A$1;Personal!$B$20:$Q$51;J6; FALSE))

Is there any general solution to do this?

Marton



  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 11
Default custom function - with built-in function

Thank you very much. Now it's working.
Now it does all I really wanted.
Yes I know the bug that it won't update if color changes...
Is it possible (and how complicate?) to modify the code to update like
built-in functions?
Thanks,
Marton

"keepITcool" wrote in message
ft.com...


almost there..
Address returns a STRING, you need a reference.
try colorofcell(indirect(address



--
keepITcool
| www.XLsupport.com | keepITcool chello nl | amsterdam


VilMarci wrote :



  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default custom function - with built-in function

in VBA

Dim rng as Range
Dim v as Variant
set rng = Range("B9")
v = Range("B9").Value

rng is a reference to the cell B9
v is a variable containing the value stored in B9.

If a function returns a reference to the cell, then it is designed to be
utilized by another function which requires a reference. if used alone,
then it is similar to using the default value of a range (which is its
value).

--
Regards,
Tom Ogilvy

"Jim May" wrote in message
news:sx6Jd.22946$EG1.22013@lakeread04...
"functions like index and offset will return a reference,
but the lookup functions return a value."

Usage of the above has always confused me.
Clearly tell me the difference in "reference" and "value".
All I can presently say is that reference might be "B4",
whereby the value in B4 might be "100" or "testing".
I'm a bit more confused with the reference-side.
TIA,



"keepITcool" wrote in message
ft.com...


functions like index and offset will return a reference,
but the lookup functions return a value.

so:
either reconstruct your lookup with match and index.
or:
create a new function (with more arguments)
that incorporates the vlookup inside VBA


--
keepITcool
| www.XLsupport.com | keepITcool chello nl | amsterdam


VilMarci wrote :

Hi,

I have a small excel function that returns the background color value
of a cell:

Function ColorOfCell(cellaneve As Range)

Dim CellColor As Integer

CellColor = cellaneve.Interior.ColorIndex
ColorOfCell = CellColor

End Function

That's ok. Works from excel like =ColorOfCell(A1)
But how can I make it work to use with built-in functions?

Like:
=ColorOfCell(HLOOKUP($A$1;Personal!$B$20:$Q$51;J6; FALSE))

Is there any general solution to do this?

Marton





  #9   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1,071
Default custom function - with built-in function

The fact that your function doesn't recalculate when the color changes
is not a bug. It's a design decision by the XL team, which decided
many versions ago that many changes, typically formatting related,
could not possibly have an impact on the contents of a worksheet.
Unfortunately, people have found ways of making that happen. ;-)

Also note that your function will fail if passed a range with more than
1 cell.

--
Regards,

Tushar Mehta
www.tushar-mehta.com
Excel, PowerPoint, and VBA add-ins, tutorials
Custom MS Office productivity solutions

In article ,
says...
Thank you very much. Now it's working.
Now it does all I really wanted.
Yes I know the bug that it won't update if color changes...
Is it possible (and how complicate?) to modify the code to update like
built-in functions?
Thanks,
Marton

"keepITcool" wrote in message
ft.com...


almost there..
Address returns a STRING, you need a reference.
try colorofcell(indirect(address



--
keepITcool
|
www.XLsupport.com | keepITcool chello nl | amsterdam


VilMarci wrote :




  #10   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 11,272
Default custom function - with built-in function

As Tushar says, it is not a bug but a 'feature'.

The only way I have gotten around it is to have a button that changes the
cell colour, which includes a forced re-calculate.

Note also that it doesn't work on conditional formatted coloured cells.

--

HTH

RP
(remove nothere from the email address if mailing direct)


"VilMarci" wrote in message
...
Thank you very much. Now it's working.
Now it does all I really wanted.
Yes I know the bug that it won't update if color changes...
Is it possible (and how complicate?) to modify the code to update like
built-in functions?
Thanks,
Marton

"keepITcool" wrote in message
ft.com...


almost there..
Address returns a STRING, you need a reference.
try colorofcell(indirect(address



--
keepITcool
| www.XLsupport.com | keepITcool chello nl | amsterdam


VilMarci wrote :







  #11   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 11
Default custom function - with built-in function

Nice feature :)

Anyway that's ok, I use a list, so if user change the name, it also reruns
the whole stuff...

Thanks everyone!

"Bob Phillips" wrote in message
...
As Tushar says, it is not a bug but a 'feature'.

The only way I have gotten around it is to have a button that changes the
cell colour, which includes a forced re-calculate.

Note also that it doesn't work on conditional formatted coloured cells.

--

HTH

RP
(remove nothere from the email address if mailing direct)


"VilMarci" wrote in message
...
Thank you very much. Now it's working.
Now it does all I really wanted.
Yes I know the bug that it won't update if color changes...
Is it possible (and how complicate?) to modify the code to update like
built-in functions?
Thanks,
Marton

"keepITcool" wrote in message
ft.com...


almost there..
Address returns a STRING, you need a reference.
try colorofcell(indirect(address



--
keepITcool
| www.XLsupport.com | keepITcool chello nl | amsterdam


VilMarci wrote :







  #12   Report Post  
Posted to microsoft.public.excel.programming
No Name
 
Posts: n/a
Default custom function - with built-in function

In cell A2 - I have a number 123.45

Sub foo()
Dim rng As Range
Dim v As Variant
Set rng = Range("A2")
v = Range("A2").Value
End Sub

If I F8 down thru to End Sub without passing End Sub

In the Immediate Window I get:
? rng
123.45
? v
123.45

Can you provide a more diverse example of the useage
of Ref Vs Value?

Not sure I'm getting what you are saying...

-----Original Message-----
in VBA

Dim rng as Range
Dim v as Variant
set rng = Range("B9")
v = Range("B9").Value

rng is a reference to the cell B9
v is a variable containing the value stored in B9.

If a function returns a reference to the cell, then it is

designed to be
utilized by another function which requires a reference.

if used alone,
then it is similar to using the default value of a range

(which is its
value).

--
Regards,
Tom Ogilvy

"Jim May" wrote in message
news:sx6Jd.22946$EG1.22013@lakeread04...
"functions like index and offset will return a

reference,
but the lookup functions return a value."

Usage of the above has always confused me.
Clearly tell me the difference in "reference"

and "value".
All I can presently say is that reference might be "B4",
whereby the value in B4 might be "100" or "testing".
I'm a bit more confused with the reference-side.
TIA,



"keepITcool" wrote in message

ft.com...


functions like index and offset will return a

reference,
but the lookup functions return a value.

so:
either reconstruct your lookup with match and index.
or:
create a new function (with more arguments)
that incorporates the vlookup inside VBA


--
keepITcool
| www.XLsupport.com | keepITcool chello nl | amsterdam


VilMarci wrote :

Hi,

I have a small excel function that returns the

background color value
of a cell:

Function ColorOfCell(cellaneve As Range)

Dim CellColor As Integer

CellColor = cellaneve.Interior.ColorIndex
ColorOfCell = CellColor

End Function

That's ok. Works from excel like =ColorOfCell(A1)
But how can I make it work to use with built-in

functions?

Like:
=ColorOfCell(HLOOKUP($A$1;Personal!

$B$20:$Q$51;J6;FALSE))

Is there any general solution to do this?

Marton





.

  #13   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default custom function - with built-in function

What would you expect to see for the reference rng?

When you do
? rng
it is the same as
? rng.Value

both rng and v are variables. Each points to a location in memory. v
points to a location that stores the number 123.45 rng points to a
location in memory that has a pointer to the memory structure for
Range("A2") of the activesheet. If you refer to the rng variable directly
, it can't show you that memory structure, so it returns what is stored in
the default property which is the value property so you see 123.45.

--
Regards,
Tom Ogilvy




  #14   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,253
Default custom function - with built-in function



if you type ?rng in the immediate window
he'll give you the Range objects's default property
which is.. you guessed it.. .Value

make sure the the "LOCALS" window is visible.
now use F8 to step thru again, and keep a close eye on that window.

but in the locals window you can see (and learn)
about all the properties of your object variables.


--
keepITcool
| www.XLsupport.com | keepITcool chello nl | amsterdam


wrote :

If I F8 down thru to End Sub without passing End Sub

In the Immediate Window I get:
? rng
123.45
? v
123.45

Can you provide a more diverse example of the useage
of Ref Vs Value?

Not sure I'm getting what you are saying...

  #15   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 11
Default custom function - with built-in function

Hi,

Hm.. something still not good... however it's not on the function side...

I did some select case mods at the end to display text rather than color
code.
The function is ok now, but:

1. ColorOfCell(I7) returns "PH"
2. ColorOfCell(I7)="PH" returns TRUE

3. ColorOfCell(INDIRECT(ADDRESS($P8;$O$4;4;TRUE;"Pers onal"))) returns "PH"
4. ColorOfCell(INDIRECT(ADDRESS($P8;$O$4;4;TRUE;"Pers onal")))="PH" returns
"volatile"

I don't understand why line 4 is not working. I'd like to work with the
returned value further...
One more thing:
Conditional formatting based on the "PH" string entered into the cell by the
finction is working...

What's the difference between line 2 and 4?

Thanks for any help,

Marton


"keepITcool" wrote in message
ft.com...


almost there..
Address returns a STRING, you need a reference.
try colorofcell(indirect(address



--
keepITcool
| www.XLsupport.com | keepITcool chello nl | amsterdam


VilMarci wrote :



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
is there any built in function to draw lines krishnan Excel Worksheet Functions 2 June 22nd 09 01:31 PM
Sqr built-in function in Excel 2003 VBA DaleB Excel Discussion (Misc queries) 4 October 22nd 07 05:15 PM
Reference Previous Worksheet Built-in Function [email protected] Excel Worksheet Functions 1 July 6th 07 04:03 PM
Access Recordset with Built-In Function Jeff Huff Excel Programming 3 November 10th 03 10:08 PM
User-Defined Function pre-empting Built-in Function? How to undo???? MarWun Excel Programming 1 August 6th 03 09:31 PM


All times are GMT +1. The time now is 06:18 PM.

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

About Us

"It's about Microsoft Excel"