[英]Multiple ranges in one VBA For loop?
我是VBA的初学者,我只想突出N列和AA列中的空单元格。 可以在一个For循环中使用多个范围来实现此功能而不是以下代码吗?
Private Sub CommandButton22_Click()
'HIGHLIGHT
Dim cell As Range
For Each cell In Range("N")
If cell.Value = vbNullString Then
cell.Interior.ColorIndex = 6
End If
Next cell
For Each cell In Range("AA")
If cell.Value = vbNullString Then
cell.Interior.ColorIndex = 6
End If
Next cell
End Sub
编辑加入 SpecialCells
与造福方法UsedRange
由托马斯Inzina解决方案指出,
使用Range
对象的SpecialCells()
方法并避免循环
Private Sub CommandButton22_Click()
'HIGHLIGHT
Intersect(Union(Range("N:N"), Range("AA:AA")), ActiveSheet.UsedRange).SpecialCells(xlCellTypeBlanks).Interior.ColorIndex = 6
End Sub
是。 使用Application.Union
方法。 返回选区内的区域 /区域集合或连续的单元格块。
以下代码有效。
Private Sub CommandButton22_Click()
'HIGHLIGHT
Dim cell As Range
Dim target As Range
Set target = Application.Union(ActiveSheet.Range("N:N"), ActiveSheet.Range("AA:AA"))
For Each area In target.Areas
For Each cell In area
If cell.Value = vbNullString Then
cell.Interior.ColorIndex = 6
End If
Next cell
Next area
End Sub
它会为整个色彩柱着色。 如果您只想为一个子集着色,例如:从两列中的第10
行到第22
行,然后将联合线更改为类似的内容
Set target = Application.Union(ActiveSheet.Range("N10:N22"), ActiveSheet.Range("AA10:AA22"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.