ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 10751|回复: 10

[求助] 能否通过VBA对形状图形内的文字进行查找替换?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-2-19 22:05 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:Shape对象
我在Excel里面添加几个长方形,然后在每个长方形中输入文字,这些文字能否同时被查找替换?我知道普通的方法不行,能否通过VBA实现?

TA的精华主题

TA的得分主题

发表于 2011-2-21 09:01 | 显示全部楼层
能,录制一遍宏就知道了。

TA的精华主题

TA的得分主题

发表于 2011-2-21 07:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

〖Excel Home友情提示〗

   

很遗憾通知楼上朋友,您的帖子在24小时之内没有任何回复!

通常情况下,本论坛发布的主题帖会在8小时被回复或处理。您的帖子在24小时之内未被回复,其中的原因可能是

1、问题表述不清、模棱两可,难以理解,帮助者被搞晕了,夺帖而出;
2、没有上传必要的附件,或附件被遗忘在某个角落;
3、发帖提问时,语气带棱角、带挑衅,不幸被列入不受欢迎的帖子;
4、所提问题不成立,或提不合理的要求,乐于助人者使出“走为上”之计;
5、话题较偏、较冷或者发布到了不合适的版块,暂时无人问津,顾影自怜。


为了提高您的问题解决效率,我们推荐您阅读以下文章:
* 如何发表新话题和上传附件:http://club.excelhome.net/thread-45649-1-1.html
* 发帖的技巧:http://club.excelhome.net/thread-176339-1-1.html
* EH技术论坛的最佳学习方法:http://club.excelhome.net/thread-117862-1-1.html

TA的精华主题

TA的得分主题

发表于 2011-2-21 10:03 | 显示全部楼层
遍历所有图形对象,与图形文本进行比对

TA的精华主题

TA的得分主题

发表于 2011-2-21 12:04 | 显示全部楼层
Sheet1.Shapes(1).TextFrame.Characters.text=replace(Sheet1.Shapes(1).TextFrame.Characters.text, "exel", "excel")

TA的精华主题

TA的得分主题

发表于 2011-2-21 19:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
可否发一例,学习

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-2-21 21:07 | 显示全部楼层

回复 5楼 小fisher 的帖子

谢谢大家,我按照这位朋友的方法,写到VBA进去了
因为我图形比较多,我依次按照Shapes(1)、Shapes(2)、Shapes(3)的顺序加了语句,一直加到Shapes(39),可是当我运行到Shapes(12)的时候就卡住了。语句完全一样,要卡应该Shapes(1)就卡,怎么会前11个可以运行下去,到了第12才卡呢?这是怎么回事?
我把需要替换的那个文件一并发上来,按Alt+F11可以看VBA程序,希望高手指点迷津!

21uguide_sys tem_flow0408_cn.rar

64.47 KB, 下载次数: 156

TA的精华主题

TA的得分主题

发表于 2011-2-21 21:44 | 显示全部楼层
因为Shapes(12)是一条线,没带文本框,所以才会出错,可以使用on error resume next跳过出错误:

Sub Macro1()
'
' Macro1 Macro
'
' 快捷键: Ctrl+a
'
    Dim sht As Worksheet
    Dim i As Integer
   
    Set sht = Sheets("1")
    For i = 1 To sht.Shapes.Count
        On Error Resume Next
        sht.Shapes(i).TextFrame.Characters.Text = Replace(sht.Shapes(i).TextFrame.Characters.Text, "なし", "无")
        On Error GoTo 0
    Next
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-2-22 17:46 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复 8楼 小fisher 的帖子

好人!谢谢!我晚上回去试试!

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-2-22 17:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复 8楼 小fisher 的帖子

好人!谢谢!我晚上回去试试!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-23 19:45 , Processed in 0.032865 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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