ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

代码如何改进

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-5-31 17:55 | 显示全部楼层 |阅读模式


为什么每次删除总是留下一行没删干净


求大神指点

空白模板.rar

38.68 KB, 下载次数: 3

TA的精华主题

TA的得分主题

发表于 2023-5-31 18:22 | 显示全部楼层
本帖最后由 batmanbbs 于 2023-5-31 18:31 编辑

楼主要求说得不太清楚,我猜测是删除除了第一列之外都是空白的行。PS:如果空白行是连续的,可以添加一个布尔变量进行判断,以提高运行速度。
注意:表格不能有合并单元格
image.png


TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-31 19:42 | 显示全部楼层
batmanbbs 发表于 2023-5-31 18:22
楼主要求说得不太清楚,我猜测是删除除了第一列之外都是空白的行。PS:如果空白行是连续的,可以添加一个布 ...

大神  现在有合并单元格了  能麻烦再升级一下吗

删除空行.7z

46.07 KB, 下载次数: 5

TA的精华主题

TA的得分主题

发表于 2023-5-31 20:13 | 显示全部楼层
本帖最后由 batmanbbs 于 2023-5-31 21:46 编辑

直接看楼下吧

TA的精华主题

TA的得分主题

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

用你原来的,修改一处即可
PS:建议以后上传完整文档,这样才能解决具体问题,避免反复修改。
image.png
这段代码还有考虑不周全的地方,第一行有跨列的单元格会报错。针对你的表格再修改一处。
image.png
要完全适应就比较复杂了,需要以单元格为单位进行遍历,不能用行的方式。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-1 10:13 | 显示全部楼层
batmanbbs 发表于 2023-5-31 20:24
用你原来的,修改一处即可
PS:建议以后上传完整文档,这样才能解决具体问题,避免反复修改。


老师 有时间帮忙看下吗,  没有数字的表格 想要连带标题栏一起删除  这个能实现吗
f18f6f57e0751da28b404f6cab8fad5.png

模板.rar

157.66 KB, 下载次数: 5

TA的精华主题

TA的得分主题

发表于 2023-6-1 11:50 | 显示全部楼层
本帖最后由 batmanbbs 于 2023-6-1 12:12 编辑

记得循环从最后一行开始。
其实,以楼主一楼代码的水平,自己修改一下应该没有啥问题啊:)
image.png

TA的精华主题

TA的得分主题

发表于 2023-6-1 11:53 | 显示全部楼层
本帖最后由 batmanbbs 于 2023-6-1 13:53 编辑
  1. Sub 删除表格空行()
  2. '
  3. '删除表格中除了第一列之外都是空白单元格的行
  4. '
  5.     Dim myTB As Table
  6.     Dim i%, iRow%, iCol%, rStart&, rEnd&
  7.     Dim isDel As Boolean

  8.     If Selection.Tables.Count = 0 Then
  9.         MsgBox "没有指定表格"
  10.     Else
  11.         isDel = False
  12.         Set myTB = Selection.Tables(1)
  13.         With myTB
  14.             iRow = .Rows.Count
  15.             iCol = .Columns.Count
  16.             For i = iRow To 2 Step -1    '跳过表头第一行
  17.                 rStart = .Cell(i, 2).Range.Start
  18.                 rEnd = .Cell(i, iCol).Range.End
  19.                 Text = ActiveDocument.Range(rStart, rEnd)
  20.                 Text = Trim(Replace(Replace(Text, Chr(13), ""), Chr(7), ""))
  21.                 If Len(Text) = 0 Then
  22.                     If i = iRow Then
  23.                         Text = .Cell(i, 1).Range
  24.                         Text = Trim(Replace(Replace(Replace(Text, " ", ""), Chr(13), ""), Chr(7), ""))
  25.                         If Text Like "[总合小]计" Then isDel = True: Exit For
  26.                     End If
  27.                     .Cell(i, 2).Select
  28.                     With Selection
  29.                         .SelectRow: .Rows.Delete
  30.                     End With
  31.                 End If
  32.             Next i
  33.         End With
  34.         If isDel Then
  35.             myTB.Delete
  36.             With Selection
  37.                 .MoveUp: .Paragraphs(1).Range.Delete
  38.             End With
  39.         End If
  40.     End If
  41.    
  42.     Set myTB = Nothing
  43. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-1 12:25 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
batmanbbs 发表于 2023-6-1 11:50
记得循环从最后一行开始。
其实,以楼主一楼代码的水平,自己修改一下应该没有啥问题啊:)


老师 代码我试过了  还是删除除了第一列以外为空值的行数,想要改成下面这种效果,不甚感谢

image.jpg

TA的精华主题

TA的得分主题

发表于 2023-6-1 12:35 | 显示全部楼层
本帖最后由 batmanbbs 于 2023-6-1 12:54 编辑

不会啊,我这里测试没有问题,这次增加了一些容错,请仔细校对
image.png
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-27 03:44 , Processed in 0.044979 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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