Excel VBA定义行高-优化

Excel VBA定义行高-优化,excel,vba,Excel,Vba,我已经创建了下面的代码,它定义了一系列行的高度,同时检查它们是否为空 它按预期工作,但速度惊人地慢。对于上下文,可变长度有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 ' acti

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

它按预期工作,但速度惊人地慢。对于上下文,可变长度有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

因此,如果O7是,那么它的行高将是20,否则它将是3。。O列是否包含公式。。你是说没有公式的空单元格吗?嗨,谢谢你的回复:。不,它只有文本。嗨,谢谢,它工作得很好:D只是一个后续问题。在您添加的最后一行,为什么您认为拥有它更好?Application.ScreenUpdate=True是应用程序默认值。所以,如果有更多的宏需要,最好保持这种状态。同样适用于Application.DisplayAlerts=True和Application.CutCopyMode=False