ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助]如何用VBA判断空行并删除?[未解决-高手请进]

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-3-16 12:39 | 显示全部楼层

Sub 删除空行() '删除空行或只有空格的行
 Application.ScreenUpdating = False
 Dim fl As Range
 Dim arr, arr0
 Dim k&
 Dim lr&, lc%
 Set fl = Cells.Find("*", , , , xlByColumns, xlPrevious) '查最大列
 lc = fl.Column
 Set fl = Cells.Find("*", , , , xlByRows, xlPrevious) '查最大行
 lr = fl.Row
 arr = Range(Cells(1, 1), Cells(lr, lc)).Value
 For k = UBound(arr) To 1 Step -1
    arr0 = Split(Join(Application.Index(arr, k), ""), " ")
    If UBound(arr0) <> 0 Then Rows(k).Delete
 Next k
 Application.ScreenUpdating = True
End Sub

Sub 删除空列() '删除空列或只有空格的列
 Application.ScreenUpdating = False
 Dim fl As Range
 Dim arr, arr0
 Dim l%
 Dim lr&, lc%
 Set fl = Cells.Find("*", , , , xlByColumns, xlPrevious) '查最大列
 lc = fl.Column
 Set fl = Cells.Find("*", , , , xlByRows, xlPrevious) '查最大行
 lr = fl.Row
 arr = Range(Cells(1, 1), Cells(lr, lc)).Value
 For l = UBound(arr, 2) To 1 Step -1
    arr0 = Split(Join(Application.Transpose(Application.Index(arr, , l)), ""), " ")
    If UBound(arr0) <> 0 Then Columns(l).Delete
 Next l
 Application.ScreenUpdating = True
End Sub

TA的精华主题

TA的得分主题

发表于 2008-3-16 13:20 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

http://www.excelpx.com/dispbbs.asp?boardID=5&ID=42492&page=1

空格全部替为空行不行?数据行多时还是有问题

TA的精华主题

TA的得分主题

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

TA的精华主题

TA的得分主题

发表于 2010-11-19 13:39 | 显示全部楼层
Range("C2:C94").SpecialCells(4).EntireRow.Delete

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-4-23 09:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

回复 40楼 zjxia889 的帖子

兄弟的代码符合我的需要,谢谢你

TA的精华主题

TA的得分主题

发表于 2014-9-24 17:06 | 显示全部楼层
各位的代码都很有帮助。但都不够完美啊。

TA的精华主题

TA的得分主题

发表于 2014-9-25 10:15 | 显示全部楼层
EXCEL每行有256列,用CELLS对256个单元格定位用TRIM检测即可

下面提供一段函数代码,调用形式是
布尔变量=测试空行(某行行号)
返回一个布尔值,为TRUE表示空行,FLASE是非空

比如
IF 测试空行(6) THEN
   MSGBOX "第6行是空行"
END IF

  1. Function 测试空行(行号 As Integer) As Boolean
  2. Dim 单元格 As Range
  3. Dim I As Integer

  4. 测试空行 = True
  5. For I = 1 To 256

  6.     Set 单元格 = ActiveSheet.Cells.Cells(行号, I)
  7.     If Len(Trim(单元格.Value)) > 0 Then
  8.      测试空行 = False

  9. End If
  10.    
  11. Next



  12. End Function
复制代码

TA的精华主题

TA的得分主题

发表于 2021-1-20 12:14 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-2-23 02:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
kowloon 发表于 2008-2-2 14:37
空隔(space)視為空, 判斷及刪除空行Sub DelEmptyRow()endR = Cells.SpecialCells(xlLastCell).RowendC = Ce ...

请问怎么样改写一下可以满足适用多个指定工作表或者适用除了指定的几个工作表之外的所有工作表呢?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 01:43 , Processed in 0.041689 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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