前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >回复网友VBA之Find_FindNext_并修改数据

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

作者头像
哆哆Excel
发布2022-10-25 14:15:18
6410
发布2022-10-25 14:15:18
举报
文章被收录于专栏:哆哆Excel

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

就可以啦

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 哆哆Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档