回复网友VBA之Find_FindNext_并修改数据

2022-10-25 14:15:18 浏览数 (1)

回复网友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

就可以啦

=====今天就学习到此=====

0 人点赞