VBA定义行高-优化

问题描述 投票:0回答:1

我创建了下面的代码,该代码定义行范围的高度,同时检查行是否为空。

它正在按预期方式工作,但是速度慢得令人惊讶。在上下文中,变量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
excel vba excel-vba
1个回答
0
投票

尝试这个简单而快速的解决方案

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
© www.soinside.com 2019 - 2024. All rights reserved.