我已经使用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
这可能只是一个简单的错误,但我无法弄清楚。任何帮助将非常感激。谢谢!
桑德
答案 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
是一个非常大的数字,那么这需要多次迭代,通常可以通过禁用ScreenUpdating
和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