Excel VBA: Return the Header of the First Red Cell in a Row
Question details
Create an Excel VBA macro to identify the first red-filled cell applied via conditional formatting in each row, and return its corresponding column header to a new worksheet.

- Product
- Excel
- Device & OS
- not provided
- Scenario
- Scanning rows of data (columns C through H) to identify flagged data points based on dynamically applied cell color.
- Observed behavior
- Need a macro to detect red fill colors from conditional formatting, extract the header of only the first occurrence per row, and output the results to a separate sheet.
Ensure that your workbook is saved as an Excel Macro-Enabled Workbook (.xlsm) so your VBA scripts are preserved, and confirm that your target data range contains valid headers in the first row.
Use DisplayFormat.Interior.Color and Exit For in VBA
Utilize the DisplayFormat property to accurately read conditional formatting colors and implement an Exit For statement to stop searching after the first match.
Standard 'Interior.Color' properties cannot detect colors applied through conditional formatting. You must use 'DisplayFormat.Interior.Color' to accurately identify dynamically formatted red cells.
Additionally, adding an 'Exit For' command ensures the loop stops immediately after finding the first red cell, preventing subsequent red cells in the same row from overriding your desired result.
Press ALT + F11 on your keyboard to open the Visual Basic for Applications (VBA) Editor.
Click 'Insert' from the top menu and select 'Module' to create a new blank script area for your code.
Create a loop iterating through your target rows and columns (e.g., C to H). Inside the loop, use an If statement checking 'If Cells(r, c).DisplayFormat.Interior.Color = vbRed Then'.
Inside the If block, write the corresponding column header (e.g., Cells(1, c).Value) to your target worksheet. Immediately after recording the data, write 'Exit For' to break the loop and move to the next row.
Press F5 or run the macro from the 'Macros' menu in your workbook to extract the headers of the first red cells.

Automate Workflows with WPS Spreadsheet Macros
WPS Office fully supports VBA macros, allowing you to easily run and modify scripts that process cell colors and conditional formatting just like Microsoft Excel.
- 1. Open WPS Spreadsheet: Launch WPS Office and open your macro-enabled workbook.
- 2. Access the Developer Tools: Navigate to the Developer tab on the ribbon to access the macro environment.
- 3. Open the VBA Editor: Click on 'Visual Basic' or press ALT + F11 to view, edit, or paste your DisplayFormat code.
- 4. Execute the Code: Run your script to detect the red cells and extract the headers efficiently.

Frequently Asked Questions
Why isn't Interior.Color detecting my conditionally formatted red cells?
The standard Interior.Color property only reads statically applied background colors. For colors applied dynamically via conditional formatting rules, you must use DisplayFormat.Interior.Color.
How do I ensure the macro only returns the header for the first red cell in a row?
By placing an 'Exit For' statement immediately after the code that records the first red cell. This forces VBA to break out of the column-checking loop and immediately proceed to the next row.
Can I use DisplayFormat in a custom worksheet formula?
No, Excel does not allow the DisplayFormat property to be used inside a User Defined Function (UDF) that is called directly from a worksheet cell. It can only be utilized in standard VBA subroutines.
How do I find the specific VBA color code for the red I am using?
You can record a temporary macro while manually filling a cell with your target color, or select a red cell and type '?ActiveCell.DisplayFormat.Interior.Color' in the VBA Immediate Window to retrieve the exact numeric color value.




