在一个VBA For循环中有多个范围?
问题描述:
我是VBA的初学者,我只想突出显示N和AA列中的空单元格。在一个For循环中可以有多个范围来代替下面的代码来完成这个工作?在一个VBA 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
答
是的。使用Application.Union
方法。这会返回Areas /选区内的区域或连续的单元块集合。
以下代码有效。
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
虽然它会着色整个列。如果你只是想要的颜色的子集,例如:通过在两列22
从行10
,那么工会行更改为类似这样
Set target = Application.Union(ActiveSheet.Range("N10:N22"), ActiveSheet.Range("AA10:AA22"))
答
编辑以加入的SpecialCells
做法与受益如由托马斯Inzina溶液
使用SpecialCells()
方法Range
对象的指出并避免发生循环的UsedRange
Private Sub CommandButton22_Click()
'HIGHLIGHT
Intersect(Union(Range("N:N"), Range("AA:AA")), ActiveSheet.UsedRange).SpecialCells(xlCellTypeBlanks).Interior.ColorIndex = 6
End Sub
比你呢!它像梦一样工作。 UsedRange还修复了我的空单元格不在数据范围问题内。我非常感谢你的帮助! –
感谢您接受我的回答。快乐编码:) – 2016-10-03 12:42:30