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
推荐阅读
- bash - ansbile stdout_line 到新字符串
- android - 如何通过 Android 应用在 Facebook 上分享我的位置?
- excel - 在另一张纸中输入教科书值
- python - 为什么这个函数两次改变列表?
- python - 如何根据 y 值向条形图添加颜色渐变?
- html - HTTP 中包含的网页的实际 HTML 标记在哪里?
- arrays - ObjectAtIndex 索引 0 超出分段控件中空数组的范围
- ios - Swift - 删除硬编码字符串的最佳方法是什么?
- flutter - 如何为在颤动中打开 pdf、doc.pptx 文件提供多个选项?
- c# - 从 C# 中的 DLL 访问类/方法