Excel VBA定义行高-优化
我已经创建了下面的代码,它定义了一系列行的高度,同时检查它们是否为空 它按预期工作,但速度惊人地慢。对于上下文,可变长度有64行,运行大约需要15秒 有人知道我如何优化这段代码吗 谢谢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
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