我创建了下面的代码,该代码定义行范围的高度,同时检查行是否为空。
它正在按预期方式工作,但是速度慢得令人惊讶。在上下文中,变量length
具有64行,大约需要15秒才能运行。
有人知道我如何优化此代码吗?
谢谢
sub linhasdim()
' define a altura das linhas da folha planner
Application.ScreenUpdating = False
Dim i As Integer, n As Integer
Sheets(1).Activate ' activa a sheet(1)
Lastrow = Cells(Rows.Count, "O").End(xlUp).Row ' guarda o indice da ultima linha com conteudo da coluna O. Mesmo havendo vazios identifca a ultima linha
Length = Range(Range("O6"), Range("O" & Lastrow)).Rows.Count ' dimensão da coluna O ate a ultima celula com conteudo começando na O6
For i = 1 To Length ' loop na coluna O
If Range("O6").Offset(i, 0).Value <> "" Then ' se célula O(i) não tem vazio altura = 20
Range("O6").Offset(i, 0).RowHeight = 20
Else ' se for vazio altura =3
Range("O6").Offset(i, 0).RowHeight = 3
End If
Next i
End Sub
尝试这个简单而快速的解决方案
Sub linhasdim()
Application.ScreenUpdating = False
Dim i As Integer, n As Integer
Sheets(1).Activate ' activa a sheet(1)
Lastrow = Cells(Rows.Count, "O").End(xlUp).Row ' guarda o indice da ultima linha com conteudo da coluna O. Mesmo havendo vazios identifca a ultima linha
Range(Range("O6"), Range("O" & Lastrow)).SpecialCells(xlCellTypeBlanks).Height = 20
Range(Range("O6"), Range("O" & Lastrow)).SpecialCells(xlCellTypeConstants, 23).Height = 3
Application.ScreenUpdating = True
'Its better to always set this to default
End Sub