我需要突出显示range(r)中包含另一个范围(字典)中的值的所有单元格。
此代码仅突出显示字典范围中每个单元格的第一次出现。
Sub SearchAndFormat_Click()
Dim Dictionary As Variant
Dictionary = Range("L5:L9")
Dim r As Range, cell As Variant
Set r = Application.InputBox("Select range", "Selection Window", Type:=8)
r.ClearFormats
r.NumberFormat = "General"
For Each subj In Dictionary
For Each cell In r
Set target_cell = r.Find(subj, LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlNext)
If Not target_cell Is Nothing Then
target_cell.Interior.ColorIndex = 4
End If
Next
Next
End Sub
我曾经有一个没有嵌套循环的代码版本,但它只会突出显示字典范围中第一个值的第一次出现。
For Each cell In r
Set target_cell = r.Find(Dictionary, LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlNext)
If Not target_cell Is Nothing Then
target_cell.Interior.ColorIndex = 4
End If
Next
1条答案
按热度按时间dsf9zpds1#
如果你使用
Find
来查找所有等于目标值的值,那么它应该是一个Do ... Loop
,并积极使用参数After:=...
。但是,当你循环遍历字典和感兴趣的范围中的每个值时,没有必要使用
Find
:使用
Find
时的外观: