View Single Post
  #3   Report Post  
Posted to microsoft.public.excel.programming
laura_in_abq laura_in_abq is offline
external usenet poster
 
Posts: 15
Default Format cell based on function result

Jim,
hmmm, what do you think if I also pass a reference to cell A3 in the UDF?


"Jim Thomlinson" wrote:

Functions (UDF) called from within a sheet return values... Period. They can
not modify formats or change the values of cells that they are not in. If the
function is called in code then it can do whatever it wants but not called
from a cell. Your formatting will have to be done externally via conditional
formats or some other means... Assuming that I understood your question
correctly...
--
HTH...

Jim Thomlinson


"laura_in_abq" wrote:

Would like to format conditionally using VB. I know how to use "conditional
format" on a cell in the spreadsheet, but want to do this in the code.

In particular, I have thousands of rows of "events". Content of first two
cells in each are strings representing time. The function "get_diff" returns
difference, in seconds. So cell A3 contains
"='PERSONAL.xls'!Module1.get_diff(A1,A2)"

Function get_diff(str0 As String, str1 As String, Optional dbg_flag As
Boolean = False) As Double
Dim xDiff As Double
xDiff = convert_to_sec(str1, dbg_flag) - convert_to_sec(str0, dbg_flag)
If dbg_flag Then
MsgBox "Diff is " & Format(xDiff, "#######.######")
End If
get_diff = xDiff
End Function

How do I format the cell that gets the result based on value returned from
get_diff? That is the A3 (or any other cell from which I called get_diff)
gets formatted based on the result. I can't figure out how to select the
cell in the code.
I need something like:
If xDiff 3.001 Then
.....Font.Bold = True
.....Font.ColorIndex = 3
Else
.....Font.Bold = False
.....Font.ColorIndex = 10
Endif