Excel VBA-基于字体大小的行高

Excel VBA-基于字体大小的行高,excel,vba,Excel,Vba,我已经使用ExcelVBA工作了几个星期,学到了很多东西,特别是从StackOverflow中学到的。我只是有一个问题我无法解决 我已经制作了一个Excel工作簿,用于6个版本的价目表。其设计必须确保在发生变更或错误时,只需修改一个版本;其他版本将通过按下按钮进行更改。除了一件事之外,一切都正常:我希望根据该行中一个单元格的字体大小更改行高 具体来说,第三列有时包含字体大小为20的标题。在这种情况下,行高度需要为26.25。在所有其他情况下,行高度必须为12.75。目前我正在使用以下代码。这似乎

我已经使用ExcelVBA工作了几个星期,学到了很多东西,特别是从StackOverflow中学到的。我只是有一个问题我无法解决

我已经制作了一个Excel工作簿,用于6个版本的价目表。其设计必须确保在发生变更或错误时,只需修改一个版本;其他版本将通过按下按钮进行更改。除了一件事之外,一切都正常:我希望根据该行中一个单元格的字体大小更改行高

具体来说,第三列有时包含字体大小为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
这可能只是一个简单的错误,但我想不出来。任何帮助都将不胜感激。谢谢大家!

Sander

用于获取
最后一行
。然后,简化您的条件:

For j = 1 To lastrow
    With Cells(j,3)
        .RowHeight = IIF(.Font.Size = 20, 26.25, 12.75)
    End With
Next
如果
lastRow
是一个非常大的数字,那么这需要多次迭代,通常可以通过禁用
screenupdate
Calculation

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

nicrange
的定义是什么?另外,您如何获得
lastrow
?您确定没有处理太多行或太多单元格吗?我认为您可以使用“自动调整”,如:cells.EntireRow.autofit,或指定范围:range(“A1:B6”).rows.autofit