我有一些代码,我从网上采取它,它的工作原理。但是,当我试图增加范围时,存在一些问题
此代码有效
Sub Test1()
Dim strString$, x&
strString = Range("B1").Value
With Range("A1")
.Font.ColorIndex = 1
For x = 1 To Len(.Text) - Len(strString) Step 1
If Mid(.Text, x, Len(strString)) = strString Then .Characters(x, Len(strString)).Font.ColorIndex = 5
Next x
End With
End Sub
这不是
Sub Test1()
Dim strString$, x&
strString = Range("B1").Value
**With Range("A1:A2")**
.Font.ColorIndex = 1
**For x = 1 To Len(.Text) - Len(strString) Step 1**
If Mid(.Text, x, Len(strString)) = strString Then .Characters(x, Len(strString)).Font.ColorIndex = 5
Next x
End With
End Sub
我确信我的单元格A1和A2不为空。但是,当我在调试模式下运行它时,它显示Len(.Text)为空。但是,当我试图以这种方式做它时,它可以工作
这也有效
Sub Test1()
Dim strString$, x&
strString = Range("B1").Value
With Range("A2")
.Font.ColorIndex = 1
For x = 1 To Len(.Text) - Len(strString) Step 1
If Mid(.Text, x, Len(strString)) = strString Then .Characters(x, Len(strString)).Font.ColorIndex = 5
Next x
End With
End Sub
基于调试器,错误在于此代码
Len(.Text) which is null
答案 0 :(得分:1)
这是因为您无法在包含多个单元格的范围内调用.Text
。您需要首先遍历范围单元格,以便一次继续处理它们。
答案 1 :(得分:1)
您需要为该范围内的所有单元格创建循环,因此代码应如下所示:
Sub Test1()
Dim rng As Range
Dim strString$, x&
strString = Range("B1").Value
For Each rng In Range("A2:A3")
rng.Font.ColorIndex = 1
For x = 1 To Len(rng.Text) - Len(strString) Step 1
If Mid(rng.Text, x, Len(strString)) = strString Then rng.Characters(x, Len(strString)).Font.ColorIndex = 5
Next x
Next rng
End Sub