VBA - 字体大小的基础Rowheigth

时间:2017-01-24 17:59:17

标签: excel-vba vba excel

我已经使用Excel-VBA几周了,并且学到了很多东西,特别是来自StackOverflow。我只有一个问题超出了我的范围。

我已经为6个版本的价目表制作了Excel工作簿。必须进行设计,以便在发生变化或错误时只需更正一个版本;只需按一下按钮即可更改其他版本。一切正常,除了一件事:我想要根据该行中一个单元格的字体大小来改变行高。

具体来说,第三列有时包含字体大小为20的标题。在这种情况下,行高需要为26.25。在所有其他情况下,行高必须为12.75。目前我正在使用以下代码。它似乎有效,但速度很慢:

For j = 1 To lastrow
If Cells(j, 3).Font.Size = 20 Then
Rows.Cells(j, 3).RowHeight = 26.25
Else
Rows.Cells(j, 3).RowHeight = 12.75
End If
Next j

我已经尝试了其他一些东西,包括以下代码(将cell和nicrange声明为Range),但这不起作用:

For Each cell In nicrange
If cell.Font.Size = 20 Then
cell.RowHeight = 26.25
Else
cell.RowHeight = 12.75
End If
Next

这可能只是一个简单的错误,但我无法弄清楚。任何帮助将非常感激。谢谢!

桑德

1 个答案:

答案 0 :(得分:0)

使用this approach获取lastRow。然后,简化您的条件:

For j = 1 To lastrow
    With Cells(j,3)
        .RowHeight = IIF(.Font.Size = 20, 26.25, 12.75)
    End With
Next

如果lastRow是一个非常大的数字,那么这需要多次迭代,通常可以通过禁用ScreenUpdatingCalculation来优化

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For j = 1 To lastrow
    With Cells(j,3)
        .RowHeight = IIF(.Font.Size = 20, 26.25, 12.75)
    End With
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True