How to: 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;
    
    Static previousRow As Integer = 0
    
  2. Retrieve a reference to the current cell using the Microsoft.Office.Interop.Excel._Application.ActiveCell* property.

    Excel.Range currentCell = this.Application.ActiveCell;
    
    Dim currentCell As Excel.Range = Me.Application.ActiveCell
    
  3. Style the current row bold using the Microsoft.Office.Interop.Excel.Range.EntireRow* property of the active cell.

    currentCell.EntireRow.Font.Bold = true; 
    
    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)
    
    If previousRow <> 0 Then
    
  5. Ensure that the current row is different from the previous row.

    if (currentCell.Row != previousRow)
    
    If currentCell.Row <> previousRow Then
    
  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;
    
    Dim rng As Excel.Range = DirectCast(ws.Rows(previousRow), Excel.Range)
    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;
    
    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;
}
Private Sub BoldCurrentRow(ByVal ws As Excel.Worksheet)

    ' Keep track of the previously bolded row.
    Static previousRow As Integer = 0

    ' Work with the current active cell.
    Dim currentCell As Excel.Range = Me.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 Then

        ' Make sure the current row is not the same as the previous row.
        If currentCell.Row <> previousRow Then

            Dim rng As Excel.Range = DirectCast(ws.Rows(previousRow), Excel.Range)
            rng.EntireRow.Font.Bold = False
        End If
    End If

    ' Store the new row number for the next pass.
    previousRow = currentCell.Row
End Sub

See also

Work with worksheets
How to: Programmatically apply styles to ranges in workbooks
How to: Programmatically copy data and formatting across worksheets
Optional parameters in Office solutions