Apply Conditional Formatting Using VBA And UDF?

Sep 14, 2012

I am trying to create a macro (which will go in an add-in, using Excel 2007) which will apply a custom format to any selected cells which have their formulae hidden (Format Cells, Protection, Hidden). A similar macro works fine for locked cells.

Here is the UDF I wrote, which returns True/False based on the Hidden status of a cell:

I have a workbook that contains 168 sheets of data (it's an extract from a PM tool) which is effectively a status report from each project in our portfolio. Contained within each status report are some financial data that shows a Plan number and a Forecast number for which I want to apply conditional formatting to this section (this is the same section for each sheet), to all the 168 sheets without having to go individually into each sheet. I have searched here and all the varying responses to a similar situation as mine, do not cater for the number of sheets that I have. And I need to do this on a monthly basis at monthend. So in the example below I want to apply conditional formatting if the Forecast (Cols D & G) are greater than Plan (Cols B & E). Is there a way of doing this just with the conditional formatting or would it need a VBA script?

My conditional formatting code works fine for one column; however, when I try to apply the conditional formatting to two columns, the code only applies to the first column listed. Additionally, I have two sets of "rules" that apply to the same column. One of the "rules" includes two columns. The other rule applies to only one column. I'm not sure if this is my issue, or whether I'm trying to apply the same code to two different columns.

I'm trying to find a macro to apply conditional formatting to a large number of cells,

What I would like to do is when cell E96 has a value of a, cells E3:F95 are shaded in grey. Then when cell G96 has a value of a, cells G3:H96 are shaded in grey, and so on down to IU96 having a value of a and cells IU3:IV96 shaded in grey.

I have created an excel file that contains a lot of worksheets which contain a lot of raw data and charts. There are 5 different tabs for 5 different companies. Each tab currently contains only 1 year of raw data for that company. Then I have another excel worksheet that has nothing but charts on it. Each chart is a bar chart that shows each of the 5 companies. It also shows the current rate for the month for each company and the 12 month average for each company. On the chart there are also 3 lines. There is a standard line that we try to meet each month. There is also a line for the upper control limit and a line for the lower control limit. Here is my problem:

The 2 bar charts (current rate for the month & the 12 month average) are created and updated by the raw data in each of the 5 data sheets.

Based upon the values in each of the cells that create and update the bars on the charts themselves:I want the bars to be RED if the values are below the lower control limit.

And I want the bars to be GOLD if the values are above the upper control limit.

And I want the bars to be green if the values are in between the upper and lower control limits.

I need to run a loop through a column of values (attachment col B) and when it finds a "J" it will apply conditional formatting to a row of 4 cells directly adjacent. The attachment is a theoretical before & after.

Column b in sample is conditionally formatted based on it's values. I want to also apply that same formatting to the person's name in the chart in D2:I9. For example, Jeff is in bottom 50% so cell B2 is shaded red with red text. I would like to apply that same red shade and red text to all the cells in my chart that say Jeff. Also, as example, all of the cells in my chart that say Kelsey would be formatted with green shade/green text and so on...

I have a spreadsheet and I want to color particular cells in a column with a new color - i.e. any new changes need to be highlighted. I know there's a way to do tracking changes in excel, but it just sticks a little flag almost invisibly in the corner of the cell. I want to be able to bring the spreadsheet back to our administrator and say hey the stuff in red is new.

On a related note - I am working on this massive spreadsheet that is a .csv but I am saving it as an exel spreadsheet - is that ok? I am assuming that if I save it as a csv, it will return to the original formatting just without the colors, filters, etc changes I made - which is fine because I think somehow the .csv file will be uploaded to the system and no further changes need to be made.

I found out the hard way when you have a .csv file and make changes and then save it, you lose all the fun row/column size adjustments, color, etc - but I figure in the meantime I'll work on it as a excel spreadsheet and then return it to it's natural .csv file status.

I am having trouble getting some conditional formatting to apply to all cells in a column in a pivot table. Currently, the conditional formatting is only applying to the top level items in the pivot but is not applying to the lower level items. I can see why it is doing this. the range in "Applies to" is only specifying the rows that contain the top level items. I tried to change the range to D10:D647 but, it reverts back to just the top level items. How to get it to apply to everything?

I am trying to use the status of Conditional Formatting to toggle on/off protection for a cell.

I have a cell with Conditional Formatting applied if the result of a formula is true. If the Conditional Formatting is applied, I want the cell protection turned on so a user can not change the entry in the cell. If Conditional Formatting is not applied (false), cell protection is turned off and the user may edit.

I want to apply conditional formatting by VBA. Cell Q2 contains the month number, (in this case 11). I want each cell in the range D2:D50 to be filled in red and the word 'UNPAID' appear if Q2 is greater than 10 and the cell is blank, otherwise no formatting at all. I'd like this to be triggered on the Worksheet_SelectionChange event if at all possible.

I downloaded the checkbook register from Microsoft.com and am trying to add afew cells at the end to quickly calculate my outstanding debits and creditsso that I can balance my statements automatically. I figured out how to writethe formula properly (eventually), but the cells will not take on thecurrency format no matter what I do. I have tried pasting the format from theother cells within the register, tried clearing the format and reapplying thecurrency format, tried accounting, etc.

I have a column in a sheet referencing data from a column in another sheet in my workbook. I want to apply conditional formatting on these numeric values, from red for lowest vals to green for highest. However the fact that my column is referencing cells that will not yet have data means that they are being pulled over as 0. I am not displaying zero values in cells but the zero vals are still being included in the conditional format. Is there any way to discount these zero vals?

I recorded a macro in which I applied a conditional format to a range (the selection).But, when i replay this macro, the conditional format is only applied to the first cell in the range. This can be seen in the "Manage Rules" dialog of Conditional formatting, where the "applies to" column shows only one cell, even though a range of cells was selected by the code.

I set a breakpoint at the first line of code here, and confirmed that the selection is correct, and indeed it is, as in the immediate window, ?Selection.Address correctly gives "$O$6:$O$21".

I have a conditonal format of cells across Row 2 based on the contents of cell D2. The formula for the conditional format is

=$D$2="NONE"

The formatting applies to these cells:

=$F$2:$G$2,$I$2:$K$2,$M$2:$N$2,$O$2,$T$2:$V$2,$X$2:$AA$2

I would like to fill in the same conditional format down to 51 other rows but the formatting for each row should be based on the contents of its own cell i.e. $D$3, $D$4, $D$5 etc. How can I do this with code?

I have software that exports to an excel file. The files are one or two page reports. The way the software dumps the reports into excel, it comes out looking pretty rough. The rows and columns aren't spaced very well, the fonts look like garbage, and nobody likes them.

I would like to apply formatting changes to these reports automatically without the end user having to do anything. So as soon as the document is opened up it bolds the column headers, adjusts column widths etc. The reports are auto generated so no formatting can be done when the reports are made.

There may also be different formatting done to different reports. The files will come out named something like, "Report_A_DDMMYYY.xls, Report_B_DDMMYYY.xls," etc. Report A, and Report B will likely need different formatting.

I'm not opposed to using VBA or whatever might be necessary to make this happen. I can learn anything I need to pretty quickly, I just don't know where to start with this.

I was wondering if is possible to apply a conditional format rule to a range of cells only when certain other cells outside of the range are the active cells. eg row C4-J4 has a conditional format to identify duplicates from range C5-C10, but I also want the same conditional rule to apply separately and uniquely if the active cell falls within the next active range D5-D10. So basically only apply conditional formatting separately and uniquely as the active cell moves its way across the columns?

I have used VBA to apply conditional formating to a range of cells. i.e if cell B14 <>"" then row 14 is pale blue untill cell V14 is populated with the time then it removes the formating. One criteria is that if Q14(21/08/06 20:00)>NOW(AA2) and < NOW+1(AA3) then Row turns green(i.e. is due in the next 24 hrs).

Problem is that this formula is applied after a field is updated. When 21/08/06 20:00 comes and goes the row remains green unless I update one of the fields along that row. What would I have to do to make the formating change back automatically when the critera is no longer being met. Here is my codethere are 2 other if statements similar to this with in this code but this is the only part that shouldn't require any user input for the formatting to occour)

I'm looking to see if there is a way to take the decimal place formatting of cell and apply it to other cells.

For example, if someone types in 0.0001 into a source cell, I'd like to take that decimal formatting and apply it to other destination cells. This way when values are typed into those cells it will automatically display 4 places past the decimal, no matter what the value. ie 50 will display 50.0000