ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 批量删除单无格空行

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-21 19:56 | 显示全部楼层

解决大部分,但第二行的对齐方式被改变了,原来是左对齐的,用了代码后,变右对齐了,如下图画红线处:
TIM截图20180521195436.png

麻烦抽时间帮我看看,谢谢了

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-21 20:16 | 显示全部楼层
413191246se 发表于 2018-5-21 17:37
m0018 朋友代码未做到位,请继续努力!

确实有特殊状况

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-21 20:17 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
duquancai 发表于 2018-5-21 18:42
有时间,我写个到位的代码。有时间再写哈。

期待您的方法
谢谢

TA的精华主题

TA的得分主题

发表于 2018-5-21 20:44 | 显示全部楼层
本帖最后由 413191246se 于 2018-5-21 20:54 编辑

大功告成!!!
  1. Sub 表格单元格空行删除()
  2.     Dim t As Table, c As Cell, i As Paragraph
  3.     For Each t In ActiveDocument.Tables
  4.         For Each c In t.Range.Cells
  5.             For Each i In c.Range.Paragraphs
  6.                 If Asc(i.Range) = 13 And Len(i.Range) = 1 Then i.Range.Delete
  7.             Next
  8.             If Len(c.Range.Paragraphs.Last.Range) = 2 Then '最末段落字长为 2 则为空行-->删除上段末尾段落标记
  9.                 If c.Range.Paragraphs.Count > 1 Then c.Range.Paragraphs(c.Range.Paragraphs.Count - 1).Range.Characters.Last.Delete
  10.             End If
  11.         Next
  12.     Next
  13. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-21 21:04 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-5-21 21:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 duquancai 于 2018-5-21 21:11 编辑

真的大功告成了吗?请测试如下文档!仔细看看 第6个单元格和第7个单元格吧!
借此题目,提醒各位朋友,对Word对象理解深刻一下,不要浮于表面!

test.rar

6.37 KB, 下载次数: 9

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-21 21:24 | 显示全部楼层
duquancai 发表于 2018-5-21 21:08
真的大功告成了吗?请测试如下文档!仔细看看 第6个单元格和第7个单元格吧!
借此题目,提醒各位朋友, ...

还是老师总结的意外状况比较全
希望老师能解决这些问题,谢谢

TA的精华主题

TA的得分主题

发表于 2018-5-21 22:24 | 显示全部楼层
天空飘过啥 发表于 2018-5-21 21:24
还是老师总结的意外状况比较全
希望老师能解决这些问题,谢谢

我记得前不久,我在论坛写代码:1.我写代码了,提问者还成大爷了!2.我写了代码了,提问者拿到代码一走了之,根本不回复了!3.我写代码了,还有人攻击我!鉴于此:不想在本论坛的本版块再写代码了!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-21 23:40 | 显示全部楼层
duquancai 发表于 2018-5-21 22:24
我记得前不久,我在论坛写代码:1.我写代码了,提问者还成大爷了!2.我写了代码了,提问者拿到代码一走了 ...

谢谢老师继续关注我的帖子

您刚说令您寒心的3种情况,我可都没有哦

不在本论坛写代码了,别啊,看你的回复帖子记录超多,人很热情、技术更没的说,你不在本版块了,那可是我们这些菜鸟的一大损失啊!

TA的精华主题

TA的得分主题

发表于 2018-5-22 02:12 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
* 杜先生 提出了表格中套表格的更难状况,我无以应对,只能处理一些简单、规则的表格了;
* 杜先生 说的其它情况,是不是说我呢?我前一段也得罪了 杜先生……OMG!
* 希望 杜先生 不要走!继续为大家贡献力量。
* 楼主 说的左、右对齐问题,我认为问题不大,与这个删除表格单元格内空行比不算什么,故忽略。
* 最后也借鉴了一下 ming0018 朋友的代码,精简了一下,作为目前我个人的最终结果吧!
  1. Sub 删除空行_表格单元格()
  2. '光标在表格外,处理所有表格;否则,处理光标所在表格
  3.     Dim t As Table, a As Long, c As Cell, i As Paragraph
  4.     If Selection.Information(wdWithInTable) = True Then a = 1
  5.     For Each t In ActiveDocument.Tables
  6.         If a = 1 Then Set t = Selection.Tables(1)
  7.         For Each c In t.Range.Cells
  8.             For Each i In c.Range.Paragraphs
  9.                 If Asc(i.Range) = 13 And Len(i.Range) = 1 Then i.Range.Delete
  10.             Next
  11.             With c.Range.Paragraphs
  12.                 If .Count > 1 And Len(.Last.Range) = 2 Then
  13.                     .Last.Previous.Range.Characters.Last.Delete
  14.                 End If
  15.             End With
  16.         Next
  17.         If a = 1 Then Exit For
  18.     Next
  19. End Sub
复制代码

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2025-1-12 01:39 , Processed in 0.024824 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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