ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 各位大神,只想删除所有文本框,其他不删除应该怎么改?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-11-5 14:07 | 显示全部楼层 |阅读模式
Sub DeleteTextBoxes()
ActiveSheet.Shapes.SelectAll
Selection.Delete
END SUB
此VBA宏不仅会删除所有文本框,还会删除活动工作表中的各种形状,包括图片,ClipArt,Shapes,SmartArt,图表等。
   如只想删除所有文本框,其他不删除怎么改?
谢谢。

TA的精华主题

TA的得分主题

发表于 2019-11-5 14:21 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-11-5 14:29 | 显示全部楼层
想到的是可以用for each t in ActiveSheet.Shapes看t的type是不是msoTextBox而删除
不晓得能不能把文本框作为一个集合一次性选中删除

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-11-5 14:50 | 显示全部楼层

我就是从那里看后回来的,https://www.extendoffice.com/zh- ... ll-auto-shapes.html
VBA:删除活动工作表中的所有形状。

Sub DeleteShapes()
昏暗的Shp作为形状
对于ActiveSheet.Shapes中的每个Shp
Shp.Delete
下一页Shp
END SUB
可是不行!!

TA的精华主题

TA的得分主题

发表于 2019-11-5 15:06 | 显示全部楼层
  1. Dim tbx As Shape
  2. For Each tbx In ActiveSheet.Shapes
  3. If tbx.Name Like "TextBox*" Then tbx.Delete
  4. Next
复制代码


TA的精华主题

TA的得分主题

发表于 2019-11-5 15:06 | 显示全部楼层


从Shape的Type来区分的话,恐怕很容易“误杀无辜”,
我能想到的就是从名字来判断,当然,这样的前提是工作表中的文本框有一个统一的命名规则,
如TextBox1、TextBox2、TextBox3……否则我也没有什么好办法。
楼主请参考:

  1. Sub Test()
  2.     Dim shp As Shape
  3.     For Each shp In ActiveSheet.Shapes
  4.         If Left(shp.Name, 7) = "TextBox" Then shp.Delete
  5.     Next
  6. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-11-5 15:36 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-11-11 12:58 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-20 12:26 , Processed in 0.043152 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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