回复网友VBA之Find_FindNext_并修改数据
问题:有一个工作表如下
我们想查找到其中的的“哆哆”并修改为“测试”
【解决方法】
我们是先用Find查找再修改,再FindNext下一个,再修改。继续…………
【误区】
前面我有一个文章是查找并复制出来的数据
VBA在多个文件中Find某字符的数据并复制出来
代码如下
WithMyObj.Worksheets(1)
Set c = .Cells.Find(ss,Lookat:=xlPart, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
i = i 1
Lrow =mysht.Cells(Rows.Count, 1).End(xlUp).Row 1
c.EntireRow.Copymysht.Cells(Lrow, 1)
Set c =.Cells.FindNext(c)
Loop While Not c Is NothingAnd c.Address <> firstAddress
End If
m = m 1
End With
程序是查找到数据并复制出来,
Loop While Not cIs Nothing And c.Address <> firstAddress
当查找不到and查找到的数据的地址不等于第一个Address时就继续查找,
以上是可行的,
【问题来了】
但如果我们要查找后修改数据,
如果还用是以上的代码就会出现这样的错误
【问题原因】
那么当你把数据修改了以后查找不到数据后,查找不到数据了,就不能运行c.Address了,这样会出错的
【问题解决】
此时我们可以修改代码为
Sub FindNext_修改()
Dim c As Range
With ActiveSheet
Set c = .Cells.Find("哆哆", Lookat:=xlWhole)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Value = "测试"
Debug.Print c.Address
Set c = .Cells.FindNext(c)
If c Is Nothing Then
GoTo DoneFinding
End If
Loop While c.Address <>firstAddress
End If
DoneFinding:
End With
End Sub
就可以啦
=====今天就学习到此=====