How to: Programmatically change formatting in worksheet rows containing selected cells
Applies to: Visual Studio Visual Studio for Mac
Note
This article applies to Visual Studio 2017. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here
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
Declare a static variable to keep track of the previously selected row.
static int previousRow = 0;
Static previousRow As Integer = 0
Retrieve a reference to the current cell using the ActiveCell property.
Excel.Range currentCell = this.Application.ActiveCell;
Dim currentCell As Excel.Range = Me.Application.ActiveCell
Style the current row bold using the EntireRow property of the active cell.
currentCell.EntireRow.Font.Bold = true;
currentCell.EntireRow.Font.Bold = True
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
Ensure that the current row is different from the previous row.
if (currentCell.Row != previousRow)
If currentCell.Row <> previousRow Then
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
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