View Single Post
  #1   Report Post  
Paul D. Simon
 
Posts: n/a
Default Can a UDF be used on an array of cells?

I've been using this "IsRed" UDF for some time now to identify cells in
which data has been changed to red.

Public Function IsRed(rg As Range) As Boolean
Application.Volatile
IsRed = rg.Font.ColorIndex = 3
End Function

For example, in cell B1, I would enter this formula to test cell A1:

=if(IsRed(A1),1,0)

I have 2 questions regarding this:

1.) If I change the entry in cell A1 to red, B1 will automatically
change to 1. Conversely, however, if I change A1 back to black (or any
other color), B1 does not automatically change to 0. I have to hit F9
in order for that to happen, and if I (or the user) forgets to hit F9,
we've got problems. Is there any way to have it automatically change
to 0 just like it automatically changes to 1?

2.) In a particular worksheet, there are about 500 rows of data in 33
fields that go from column A through column AG. The user will indicate
changes he makes to data by changing the color of that data to red, and
I need to test for any record where the contents of any cells have been
changed to red. I could enter 33 corresponding if(IsRed) formulas in
cells AJ through BP, but at 33 such formulas per record times 500
records, that's a lot of formulas! Is there a way to use if(IsRed) on
an array of cells? The following obviously doesn't work, but it
illustrates what I'm trying to accomplish: in cell AJ2
=if(IsRed(A2:AG2),1,0)

Many thanks,
Paul