How to use a macro to apply cell shading format to every other row in a selected range in Excel

Article translations Article translations
Article ID: 213616 - View products that this article applies to.
This article was previously published under Q213616
Expand all | Collapse all

On This Page


Microsoft Excel automatically formats new data that you type at the end of a list to match the previous rows. You can also format a list programmatically. This article contains a sample Microsoft Visual Basic for Applications procedure to shade every other row in a selection.


Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements.
To see the patterns available in Microsoft Office Excel 2003 and in earlier versions, click Cells on the Format menu, and then click the Patterns tab.

To see the patterns available in Microsoft Office Excel 2007, follow these steps:
  1. On the Home tab, click Format in the Cells group . Then, click Format Cells..
  2. In the Format Cells dialog box, click the Fill tab.
The Pattern drop-down list displays the available patterns. The pattern that is used in the following macro, referred to by its constant name, xlGray16, is the fifth one from the right in the first row.

The following macro sets the pattern in every other row of the current selection to xlGray16.

Sample Visual Basic Procedure

Sub ShadeEveryOtherRow()
    Dim Counter As Integer

    'For every row in the current selection...
    For Counter = 1 To Selection.Rows.Count
        'If the row is an odd number (within the selection)...
        If Counter Mod 2 = 1 Then
            'Set the pattern to xlGray16.
            Selection.Rows(Counter).Interior.Pattern = xlGray16
        End If

End Sub
Note This macro runs only on the rows of the selected range. If you add any new rows of data after you run the macro, you must run the macro again with all the new rows of data selected.

This process can also be done manually by using conditional formatting.

For additional information about how to format every other row by using conditional formatting, click the following article number to view the article in the Microsoft Knowledge Base:
268568 How to use conditional formatting to shade every other row in Excel
You can also format a list by using the AutoFormat menu command. In Excel 2003 and in Microsoft Excel 2002, the AutoFormat menu command is on the Format menu. In Excel 2007, you have to add the AutoFormat menu command to the Quick Access Toolbar. To do this, follow these steps:
  1. Click Microsoft Office Button, and then click Excel Options.
  2. Click Customize.
  3. Click to select the All Commands under the Choose commands from.
  4. Click AutoFormat, click Add, and then click OK.


For additional information about how to obtain help with Visual Basic for Applications, click the following article number to view the article in the Microsoft Knowledge Base:
226118 List of resources that are available to help you learn Visual Basic for Applications programming


Article ID: 213616 - Last Review: January 10, 2007 - Revision: 7.0
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Excel 2004 for Mac
  • Microsoft Excel X for Mac
  • Microsoft Excel 2001 for Mac
  • Microsoft Excel 98 for Macintosh
kbexpertisebeginner kbdtacode kbhowto kbprogramming KB213616

Give Feedback


Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from