Programmatically change formatting in worksheet rows containing selected cells

You can change the font of an entire row that contains a selected cell so that the text is bold.

Applies to: The information in this topic applies to document-level projects and VSTO Add-in projects for Excel. For more information, see Features available by Office application and project type.

To make the current row bold and the previously bolded row normal

  1. Declare a static variable to keep track of the previously selected row.

    static int previousRow = 0;
    
  2. Retrieve a reference to the current cell using the ActiveCell property.

    Excel.Range currentCell = this.Application.ActiveCell;
    
  3. Style the current row bold using the EntireRow property of the active cell.

    currentCell.EntireRow.Font.Bold = true;
    
  4. Ensure that the current value of previousRow is not 0. A 0 (zero) indicates that this is the first time through this code.

    if (previousRow != 0)
    
  5. Ensure that the current row is different from the previous row.

    if (currentCell.Row != previousRow)
    
  6. Retrieve a reference to a range that represents the row that was previously selected, and set that row to not be bold.

    Excel.Range rng = (Excel.Range)ws.Rows[previousRow];
    rng.EntireRow.Font.Bold = false;
    
  7. Store the current row so that it can become the previous row on the next pass.

    previousRow = currentCell.Row;
    

    The following example shows the complete method.

Example

// Keep track of the previously bolded row.
static int previousRow = 0;

private void BoldCurrentRow(Excel.Worksheet ws)
{
    // Work with the current active cell.
    Excel.Range currentCell = this.Application.ActiveCell;

    // Bold the current row.
    currentCell.EntireRow.Font.Bold = true; 

    // If a pass has been done previously, make the old row not bold.
    // Make sure previousRow is not 0 (otherwise this is your first pass through).
    if (previousRow != 0)
    
        // Make sure the current row is not the same as the previous row.
        if (currentCell.Row != previousRow)
        {
            Excel.Range rng = (Excel.Range)ws.Rows[previousRow];
            rng.EntireRow.Font.Bold = false;
        }

    // Store the new row number for the next pass.
    previousRow = currentCell.Row;
}