VBA Set Column Width or Row Height

This tutorial will demonstrate how to set row height and column widths using VBA.

Excel Row heights and Columns widths can be changed in VBA by setting the .RowHeight and .ColumnWidth properties.

Set Column Width with VBA

Macro to set the column width of Columns A to E:

Sub Column_Width()
    Columns("A:E").ColumnWidth = 30
End Sub

Set Row Height with VBA

Macro to set the row height of Row 1:

Sub RowHeight()
    Rows("1:1").RowHeight = 30
End Sub

Autofit Column Width

Excel offers the ability to “Autofit” column widths. This feature adjusts the column width so that the column(s) is wide enough to fit all text found in that column.
vba autofit column width
To Autofit column widths in VBA:

Columns("A:B").Autofit

We wrote more about this in another article on how to Autofit a Column from VBA, including how to Autofit all used columns.

Autofit Row Height

You can also autofit row heights using a similar method:

Rows("1:2").Autofit

Set Cell Width

You can also adjust column widths by referencing a cell:

Range("a1").EntireColumn.ColumnWidth = 20

Set Cell Height

Or adjust row heights by referencing a cell:

Range("a1").EntireRow.RowHeight = 10

Obtain Column Width

To obtain the column width of a column:

dim iColumnWidth as long
iColumnWidth = columns("a").ColumnWidth

Note: This will return Null if all columns in the range do not have the same width.

Obtain Row Height

Similarly, you can obtain the row height:

dim iRowHeight as long
iRowHeight = rows("1").RowHeight