我还在学习VBA。我有一个要求,我需要处理在特定列中不为空的行。我尝试了For
循环。但是考虑到Excel中的1万个条目,存在性能问题。您能建议一个while循环,该循环仅跳到有值的行,而不跳到所有行吗?
基本上,我需要所有不为空的行的句柄。
答案 0 :(得分:3)
SpecialCells
是您的朋友在这里。
如果要从A列中获取所有具有常量值的单元格,则可以使用Columns(1).SpecialCells(xlCellTypeConstants)
如果您希望A列中所有包含公式的单元格,则可以使用Columns(1).SpecialCells(xlCellTypeFormulas)
如果您希望列A中的所有单元格都为空白,则可以使用Columns(1).SpecialCells(xlCellTypeBlanks)
这3个字段在一起将为您提供该列中的所有所有单元格。这意味着“非空白”将xlCellTypeConstants
与xlCellTypeFormulas
组合在一起。 “组合”的另一个名称是Union
,它使我们可以将Range
粘在一起
Dim rngNonBlank AS Range
Set rngNonBlank = Union(Columns(1).SpecialCells(xlCellTypeConstants), _
Columns(1).SpecialCells(xlCellTypeFormulas))
Dim rngLoopThrough AS Range
For Each rngLoopThrough In rngNonBlank
'You can use rngLoopThrough.EntireRow to get the entire Row
Next rngLoopThrough