VBA 定义行高 - 优化

  • 本文关键字:优化 定义 VBA excel vba
  • 更新时间 :
  • 英文 :


我创建了下面的代码,该代码定义了一系列行的高度,同时检查它们是否为空。

它按预期工作,但是速度出奇地慢。对于上下文,变量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

试试这个简单快速的解决方案。区域中空单元格的行高设置为 20。区域中文本/常量单元格的行高设置为 3

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
Range(Range("O6"), Range("O" & Lastrow)). _
SpecialCells(xlCellTypeBlanks).EntireRow.RowHeight = 20
Range(Range("O6"), Range("O" & Lastrow)). _
SpecialCells(xlCellTypeConstants, 23).EntireRow.RowHeight = 3
' thought I wonder why row height the for cells with text is 3 !!
Application.ScreenUpdating = True ' better to reset the value
End Sub

最新更新