Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1582|回复: 5

关于合并单元格的部分文本替换的疑问

[复制链接]
发表于 2019-12-30 19:30 | 显示全部楼层 |阅读模式
本人在做一个工作簿中所有工作表的文本替换时,发现用命令进行替换没有问题,用VBA代码替换时就不行,应该就是搜不到,实在是没法啊,求大神相助!

替换.rar

32.91 KB, 下载次数: 11

发表于 2019-12-30 20:33 | 显示全部楼层
  Dim rg as range'
'
'...
For Each sh In wb.Worksheets
        sh.Activate
        For j = 0 To k - 1 '遍历工作簿所有的工作表
            whatstr = rep1(j) '需要替换文本
            replstr = rep2(j) '替换文本
            
            For Each rg In sh.Range("A1:g55")
                        rg.Value = Replace(rg.Value, whatstr, replstr)
            Next rg


        Next j
    Next
'....

录制的代码就和你的一样,但不知道为什么不行 ,
这样虽然可以实现要求 ,但运行效率很低 , 应该使用数组循环 , 而不是单元格循环.
回复

使用道具 举报

发表于 2019-12-31 17:18 | 显示全部楼层
Sub test()
    Dim A, wb, sh, i
    A = Range("a1").CurrentRegion
    Set wb = Workbooks.Open(ThisWorkbook.Path & "\003-勘测计划工作量一览表.xls")
    For Each sh In wb.Sheets
        For i = 2 To UBound(A)
            sh.Cells.Replace A(i, 1), A(i, 2)
        Next i
    Next sh
    wb.Close 1
End Sub


这样可以吗

回复

使用道具 举报

 楼主| 发表于 2020-1-1 09:47 | 显示全部楼层
本帖最后由 后仰运球 于 2020-1-1 09:51 编辑

试试哈,感觉和录制宏差不多
回复

使用道具 举报

 楼主| 发表于 2020-1-1 09:49 | 显示全部楼层
砂海 发表于 2019-12-30 20:33
Dim rg as range'
'
'...

是啊,而且录制宏时,点选针对工作表和工作簿出来的代码没有区别,感觉是bug了啊

回复

使用道具 举报

 楼主| 发表于 2020-1-1 10:02 | 显示全部楼层
爱疯 发表于 2019-12-31 17:18
Sub test()
    Dim A, wb, sh, i
    A = Range("a1").CurrentRegion

可以啊,试过了,真是不明白    这样简单的代码就可以,录制的就不行   我改成这样sh.Cells.Replace rep1(i), rep2(i)也可以
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 01:51 , Processed in 0.355220 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表