Written by Allen Wyatt (last updated September 20, 2018)
This tip applies to Excel 97, 2000, 2002, and 2003
Gus asked if there was a way to change the color of the drop-down arrows that appear at the top of each column when AutoFilter is turned on. When a filter is not applied to a column, the drop-down arrow is black; when a filter is applied, the drop-down arrow is navy blue. Gus wanted to change the colors because there isn't enough contrast between black and navy blue on his monitor.
Unfortunately, it appears that the color of the drop-down arrows is hard-coded into Excel and cannot be changed. You can try a workaround, if you desire, that would instead color the first cell in each of the filtered columns. Add the following macro to a regular module in the workbook:
Sub ColorDisplayFilter() Dim flt As Filter Dim iCol As Integer Dim lRow As Long iCol = 0 lRow = ActiveSheet.AutoFilter.Range.Row Application.EnableEvents = False For Each flt In ActiveSheet.AutoFilter.Filters iCol = iCol + 1 If flt.On Then Cells(lRow, iCol).Interior.Color = vbYellow Else Cells(lRow, iCol).Interior.ColorIndex = xlColorIndexNone End If Next flt Application.EnableEvents = True End Sub
The code steps through the filters for a worksheet and, if the filter is active for a column, colors the first cell yellow. If the filter is not active, then it gets rid of the yellow color.
To trigger the routine so that it runs automatically, there are two things you need to do. First of all, you need to add the following macro to the thisWorkbook object:
Private Sub Workbook_SheetCalculate(ByVal Sh As Object) If Sh.AutoFilterMode Then ColorDisplayFilter End Sub
This triggers every time the worksheet is calculated. If the AutoFilterMode property is True, then the coloring macro is executed.
The second thing you need to do is add a SUBTOTAL formula to your worksheet. Assuming that column A is one of the columns in the filter, you could add the following to the worksheet:
=SUBTOTAL(9,A:A)
The SUBTOTAL function is recalculated every time a filter is changed, so this helps ensure that the coloring macro is executed. The formula can be hidden, if desired, but it must be on the worksheet that has the filter to ensure that the sheet triggers the event.
Note:
ExcelTips is your source for cost-effective Microsoft Excel training. This tip (2371) applies to Microsoft Excel 97, 2000, 2002, and 2003.
Save Time and Supercharge Excel! Automate virtually any routine task and save yourself hours, days, maybe even weeks. Then, learn how to make Excel do things you thought were simply impossible! Mastering advanced Excel macros has never been easier. Check out Excel 2010 VBA and Macros today!
Want a tool that will help you toggle AutoFilter on and off? Excel provides some tools you can use, but you need to be ...
Discover MoreThe filtering capabilities of Excel are very helpful when you are working with large sets of data. You can create a ...
Discover MoreWhen you turn on AutoFiltering, Excel displays a drop-down list at the top of each column in your data table. This list ...
Discover MoreFREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."
2016-11-02 19:07:46
Peter
Hi
This is great. I find it works in other open workbooks as well as the one with the code. However, I get Run-time error ‘91’ - not all the time, but sometimes. How do I stop this?
2016-08-29 02:20:32
juzer
Hello Sir, can you please give me complete VBA code.. Thank You
2015-02-04 04:37:11
Stephen
Changing AutoFilter Drop-Down Arrow Colors. Allen Wyatt Tip (2371)
How to change Allen's Tip "to color the first cell in each of the filtered columns" to be activated as well if the sort filter function is used but no data filtered?
Appreciating Thank you
Stephen
2014-11-18 07:03:11
Gilberto
Hello Allen,
I understand that the macro scans all the filtered columns, which in my case is not "recommendable".
Would it be possible to have a "formula", say in the cell above the heading row, that "flags" if that heading cell has a filter "active"? That way I could easily add a "Conditional formatting" rule for the heading cell to change color when the filter is active.
Thanks in advance
Got a version of Excel that uses the menu interface (Excel 97, Excel 2000, Excel 2002, or Excel 2003)? This site is for you! If you use a later version of Excel, visit our ExcelTips site focusing on the ribbon interface.
FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."
Copyright © 2023 Sharon Parq Associates, Inc.
Comments