Written by Allen Wyatt (last updated June 15, 2024)
This tip applies to Excel 2007, 2010, 2013, 2016, 2019, 2021, and Excel in Microsoft 365
Allan uses a lot of conditional formatting, nearly always using formulas to specify the conditions for the formatting. Recently he discovered, by chance, that he had a #REF! error in one of his conditional format formulas. As far as Allan could figure, this was the result of deleting the row of a cell referred to in the formula. The impact is that the conditional formatting won't work for that condition. This has made Allan concerned that there are other instances of conditional formats that have become corrupted since originally being set up. He wonders if there is any simple way of checking all conditional formatting so that these errors can easily be found.
The best way is to use a macro to step through all the conditional formats defined for a worksheet. The following macro does just that, looking for any #REF! errors in the formulas.
Sub FindCorruptConditionalFormat() Dim c As Range Dim fc As Variant Selection.SpecialCells(xlCellTypeAllFormatConditions).Select For Each c In Selection.Cells For Each fc In c.FormatConditions If InStr(1, fc.Formula1, "#REF!", _ vbBinaryCompare) > 0 Then MsgBox Prompt:=c.Address & ": " _ & fc.Formula1, Buttons:=vbOKOnly End If Next fc Next c End Sub
If an error is found, then a message box displays both the address of the cell and the formula used in the conditional formatting rule.
Note:
ExcelTips is your source for cost-effective Microsoft Excel training. This tip (11361) applies to Microsoft Excel 2007, 2010, 2013, 2016, 2019, 2021, and Excel in Microsoft 365. You can find a version of this tip for the older menu interface of Excel here: Detecting Errors in Conditional Formatting Formulas.
Dive Deep into Macros! Make Excel do things you thought were impossible, discover techniques you won't find anywhere else, and create powerful automated reports. Bill Jelen and Tracy Syrstad help you instantly visualize information to make it actionable. You’ll find step-by-step instructions, real-world case studies, and 50 workbooks packed with examples and solutions. Check out Microsoft Excel 2019 VBA and Macros today!
If you need to find whether the duration between two dates is greater than the average of all durations, you'll find the ...
Discover MoreConditional formatting is a great tool for changing how your data looks based on the data itself. Excel won't allow you ...
Discover MoreWhen you compare dates in a conditional formatting rule, you need to be careful how you put your comparisons together. Do ...
Discover MoreFREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."
2024-06-17 12:08:11
J. Woolley
The Tip's FindCorruptConditionalFormat macro might be more reliable if the following statement
    Selection.SpecialCells(xlCellTypeAllFormatConditions).Select
was replaced by this statement
    ActiveSheet.UsedRange.SpecialCells(xlCellTypeAllFormatConditions).Select
But here is a more efficient version of the macro:
Sub FindCorruptConditionalFormat2()
    Dim fc As FormatCondition
    ActiveSheet.UsedRange.SpecialCells(xlCellTypeAllFormatConditions).Select
    For Each fc In Selection.FormatConditions
        If InStr(1, fc.Formula1, "#REF!", vbBinaryCompare) > 0 Then
            MsgBox fc.AppliesTo.Address & ": " & fc.Formula1
        End If
    Next fc
End Sub
Notice Microsoft's documentation defines xlCellTypeAllFormatConditions as "Cells of any format," but testing demonstrates it actually selects "Cells of any conditional format."
Similarly, Microsoft's documentation defines xlCellTypeSameFormatConditions as "Cells having the same format," but it actually selects "Cells having the same conditional format." For this case the macro's first statement after Dim... should be replaced by
    If ActiveCell.FormatConditions.Count = 0 Then Exit Sub
    ActiveCell.SpecialCells(xlCellTypeSameFormatConditions).Select
Like many, I’ve been frustrated when my carefully crafted conditional formatting becomes corrupted after innocently performing a copy/paste or some other such sin. And Excel’s miserable Conditional Formatting Rules Manager makes it a chore to fix the mangled rules. So My Excel Toolbox includes macros to backup and restore the active sheet’s conditional formatting using named ranges that auto-adjust to row/column changes. Run the CFBackup macro before your conditional formatting rules are broken. If they later become broken, run CFRestore.
My Excel Toolbox also includes the following dynamic array function:
    =ListFormatConditions([AllSheets], [SkipHeader])
This function returns Applies To Range, Type, and Stop If True for each conditional format. When using pre-2021 versions of Excel without support for dynamic arrays, review the PDF file UseSpillArray.pdf.
See https://sites.google.com/view/MyExcelToolbox/
Got a version of Excel that uses the ribbon interface (Excel 2007 or later)? This site is for you! If you use an earlier version of Excel, visit our ExcelTips site focusing on the menu interface.
FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."
Copyright © 2025 Sharon Parq Associates, Inc.
Comments