O problema não está no seu loop, está no seu rng
-
Quando você set rng = range("A2").end(xlDown)
está definindo rng para a última célula que é preenchida de A2. Ou seja, você está selecionando apenas uma célula.
Tente -
Set rng = Range(Cells(2, 1), Cells(2, 1).End(xlDown))
Isso funciona bem -
Sub FixRowHeight_Click()
Dim rng As Range
Dim padding As Integer
padding = 10
With ActiveSheet
Set rng = .Range(Cells(2, 1), Cells(2, 1).End(xlDown))
rng.Rows.AutoFit
For Each Row In rng
Row.VerticalAlignment = xlCenter
Row.RowHeight = Row.RowHeight + padding
Next
End With
End Sub
Mas isso também acontece -
Sub FixRowHeight_Click()
Range(Cells(2, 1), Cells(2, 1).End(xlDown)).Rows.AutoFit
For Each Row In Range(Cells(2, 1), Cells(2, 1).End(xlDown))
Row.VerticalAlignment = xlCenter
Row.RowHeight = Row.RowHeight + 10
Next
End Sub
Além disso, apenas uma nota, mas você não precisa .select
no seu código para erow
, a menos que o restante do loop seja selection.verticalalignment
etc.
Também é melhor evitar .select
em geral e codificar bastante os intervalos, mas isso não é nem aqui nem lá.