Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3
Default Setting a cell background color

I am having severe issues getting Excel to automatically set the color
attribute for a cell based on values in the cell. I have tried numerous
times with numerous methods including using the macro recorder to create the
code. However, once I create the code and build my function around it, it
doesn't work! The entire function is below:

Function DecideColor(cTrain As Date, cDoc As Date)
Dim test As String

'This compares the two dates
If cDoc < cTrain Then
ActiveCell.Select
Selection.Interior.ColorIndex = 35
test = "Good"
ElseIf cDoc cTrain Then
ActiveCell.Select
Selection.Interior.ColorIndex = 3
test = "Bad"
End If

DecideColor = test
End Function

Note, for testing purposes, I am simply puting in dates to ensure they are
different. There are many border situations I will deal with later (such as
what if the two dates are the same, et. al.). When I run this function, it
compares the dates properly, and enters the "Good" or "Bad" appropriately, so
it isn't an issue with the compare statements. It is ONLY that the color
NEVER changes! This is absolutely frustrating. Is there anyone who can help?
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 4,624
Default Setting a cell background color

If you are calling this function from the worksheet, then setting the
background color (or any other environment formatting) will not work -
functions called from cells can only return values to their calling cell.

To change the cell color via VBA, you'd need to use an event macro.

However, it seems to me that this could be more easily accomplished
using Conditional Formatting...



In article ,
SteelAdept wrote:

I am having severe issues getting Excel to automatically set the color
attribute for a cell based on values in the cell. I have tried numerous
times with numerous methods including using the macro recorder to create the
code. However, once I create the code and build my function around it, it
doesn't work! The entire function is below:

Function DecideColor(cTrain As Date, cDoc As Date)
Dim test As String

'This compares the two dates
If cDoc < cTrain Then
ActiveCell.Select
Selection.Interior.ColorIndex = 35
test = "Good"
ElseIf cDoc cTrain Then
ActiveCell.Select
Selection.Interior.ColorIndex = 3
test = "Bad"
End If

DecideColor = test
End Function

Note, for testing purposes, I am simply puting in dates to ensure they are
different. There are many border situations I will deal with later (such as
what if the two dates are the same, et. al.). When I run this function, it
compares the dates properly, and enters the "Good" or "Bad" appropriately, so
it isn't an issue with the compare statements. It is ONLY that the color
NEVER changes! This is absolutely frustrating. Is there anyone who can help?

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3
Default Setting a cell background color

Thanks but it is only applied to a cell - at least I believe it is. How can
you tell? I have a cell with a formula in it that looks similar to this:
"=DecideColor("8/18/2000","9/14/2008")". This is how I invoke it. Would
that be a worksheet function?

"JE McGimpsey" wrote:

If you are calling this function from the worksheet, then setting the
background color (or any other environment formatting) will not work -
functions called from cells can only return values to their calling cell.

To change the cell color via VBA, you'd need to use an event macro.

However, it seems to me that this could be more easily accomplished
using Conditional Formatting...



In article ,
SteelAdept wrote:

I am having severe issues getting Excel to automatically set the color
attribute for a cell based on values in the cell. I have tried numerous
times with numerous methods including using the macro recorder to create the
code. However, once I create the code and build my function around it, it
doesn't work! The entire function is below:

Function DecideColor(cTrain As Date, cDoc As Date)
Dim test As String

'This compares the two dates
If cDoc < cTrain Then
ActiveCell.Select
Selection.Interior.ColorIndex = 35
test = "Good"
ElseIf cDoc cTrain Then
ActiveCell.Select
Selection.Interior.ColorIndex = 3
test = "Bad"
End If

DecideColor = test
End Function

Note, for testing purposes, I am simply puting in dates to ensure they are
different. There are many border situations I will deal with later (such as
what if the two dates are the same, et. al.). When I run this function, it
compares the dates properly, and enters the "Good" or "Bad" appropriately, so
it isn't an issue with the compare statements. It is ONLY that the color
NEVER changes! This is absolutely frustrating. Is there anyone who can help?


  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 4,624
Default Setting a cell background color

Yes - if the function is called by entering it in a cell, it can only
return values (that applies to functions called by functions called by
entering in a cell, too, so you can't get away with layering the
functions).

In article ,
SteelAdept wrote:

Thanks but it is only applied to a cell - at least I believe it is. How can
you tell? I have a cell with a formula in it that looks similar to this:
"=DecideColor("8/18/2000","9/14/2008")". This is how I invoke it. Would
that be a worksheet function?

  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,986
Default Setting a cell background color

The function does what it is supposed to do. It returns the value of "test".
That is all a function is supposed to do. If you want to set the color,
then use Conditional Format or in VBA FormatConditions.

"SteelAdept" wrote:

I am having severe issues getting Excel to automatically set the color
attribute for a cell based on values in the cell. I have tried numerous
times with numerous methods including using the macro recorder to create the
code. However, once I create the code and build my function around it, it
doesn't work! The entire function is below:

Function DecideColor(cTrain As Date, cDoc As Date)
Dim test As String

'This compares the two dates
If cDoc < cTrain Then
ActiveCell.Select
Selection.Interior.ColorIndex = 35
test = "Good"
ElseIf cDoc cTrain Then
ActiveCell.Select
Selection.Interior.ColorIndex = 3
test = "Bad"
End If

DecideColor = test
End Function

Note, for testing purposes, I am simply puting in dates to ensure they are
different. There are many border situations I will deal with later (such as
what if the two dates are the same, et. al.). When I run this function, it
compares the dates properly, and enters the "Good" or "Bad" appropriately, so
it isn't an issue with the compare statements. It is ONLY that the color
NEVER changes! This is absolutely frustrating. Is there anyone who can help?



  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3
Default Setting a cell background color

That is what I want it to do, but I want the color change as well. I
thought, from what I read, that the "Selection.Interior.ColorIndex = 3" part
of the code was a Conditional format, but I take it from your post that it is
not. I will look into FormatConditions as you suggest.

Thanks!

"JLGWhiz" wrote:

The function does what it is supposed to do. It returns the value of "test".
That is all a function is supposed to do. If you want to set the color,
then use Conditional Format or in VBA FormatConditions.

"SteelAdept" wrote:

I am having severe issues getting Excel to automatically set the color
attribute for a cell based on values in the cell. I have tried numerous
times with numerous methods including using the macro recorder to create the
code. However, once I create the code and build my function around it, it
doesn't work! The entire function is below:

Function DecideColor(cTrain As Date, cDoc As Date)
Dim test As String

'This compares the two dates
If cDoc < cTrain Then
ActiveCell.Select
Selection.Interior.ColorIndex = 35
test = "Good"
ElseIf cDoc cTrain Then
ActiveCell.Select
Selection.Interior.ColorIndex = 3
test = "Bad"
End If

DecideColor = test
End Function

Note, for testing purposes, I am simply puting in dates to ensure they are
different. There are many border situations I will deal with later (such as
what if the two dates are the same, et. al.). When I run this function, it
compares the dates properly, and enters the "Good" or "Bad" appropriately, so
it isn't an issue with the compare statements. It is ONLY that the color
NEVER changes! This is absolutely frustrating. Is there anyone who can help?

  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,986
Default Setting a cell background color

From Vertex42.com website:

Limitations of UDF's:
Cannot "record" an Excel UDF like you can an Excel macro.

More limited than regular VBA macros. UDF's cannot alter the structure or
format of a worksheet or cell.

If you call another function or macro from a UDF, the other macro is under
the same limitations as the UDF.

Cannot place a value in a cell other than the cell (or range) containing the
formula. In other words, UDF's are meant to be used as "formulas", not
necessarily "macros".

Excel user defined functions in VBA are usually much slower than functions
compiled in C++ or FORTRAN.

Often difficult to track errors.

If you create an add-in containing your UDF's, you may forget that you have
used a custom function, making the file less sharable.

Adding user defined functions to your workbook will trigger the "macro" flag
(a security issue: Tools Macros Security...).


"SteelAdept" wrote:

I am having severe issues getting Excel to automatically set the color
attribute for a cell based on values in the cell. I have tried numerous
times with numerous methods including using the macro recorder to create the
code. However, once I create the code and build my function around it, it
doesn't work! The entire function is below:

Function DecideColor(cTrain As Date, cDoc As Date)
Dim test As String

'This compares the two dates
If cDoc < cTrain Then
ActiveCell.Select
Selection.Interior.ColorIndex = 35
test = "Good"
ElseIf cDoc cTrain Then
ActiveCell.Select
Selection.Interior.ColorIndex = 3
test = "Bad"
End If

DecideColor = test
End Function

Note, for testing purposes, I am simply puting in dates to ensure they are
different. There are many border situations I will deal with later (such as
what if the two dates are the same, et. al.). When I run this function, it
compares the dates properly, and enters the "Good" or "Bad" appropriately, so
it isn't an issue with the compare statements. It is ONLY that the color
NEVER changes! This is absolutely frustrating. Is there anyone who can help?

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
Cell background color (interior color) setting not working Martin E. Excel Programming 1 May 21st 06 07:00 PM
Trouble setting background color of Worksheet Joseph Geretz Excel Programming 3 April 10th 06 04:17 PM
Setting Background Color RGB (Always goes to closest index color) [email protected] Excel Programming 6 December 2nd 05 11:47 PM
Conditionally setting background color of a cell Scott Steiner Excel Discussion (Misc queries) 1 November 20th 05 12:11 PM
Setting cell background color based on value Erik[_5_] Excel Programming 3 February 25th 04 10:56 PM


All times are GMT +1. The time now is 01:18 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"