ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-2-1 17:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
QUOTE:
以下是引用fycwater在2008-2-1 17:44:59的发言:
Application.CountA(Rows(3)) = 0  不能排除空格比如 ="   "

说得对

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-2-1 17:53 | 显示全部楼层
QUOTE:
以下是引用kowloon在2008-2-1 17:45:32的发言:

如果单元格中有空格, 也算作空

For Each cell In Rows(1)
If Trim(cell) <> "" Then
MsgBox "不空"
GoTo 100
End If
Next
MsgBox "空"
100:

报类型不匹配

TA的精华主题

TA的得分主题

发表于 2008-2-1 17:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
QUOTE:
以下是引用lindos在2008-2-1 17:53:49的发言:

报类型不匹配

这样判断的话,要是行数很多那会累死人的

特别是在2007版Excel中

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-2-1 17:57 | 显示全部楼层
QUOTE:
以下是引用wangminbai在2008-2-1 17:56:00的发言:

这样判断的话,要是行数很多那会累死人的

特别是在2007版Excel中

请问有好办法吗?

TA的精华主题

TA的得分主题

发表于 2008-2-1 18:33 | 显示全部楼层
QUOTE:
以下是引用lindos在2008-2-1 17:57:53的发言:

请问有好办法吗?

这样吧

2003版

Dim i As Long
For i = 1 To 10
If Application.WorksheetFunction.CountBlank(Range(i & ":" & i)) = 256 Then
    MsgBox i & "行为空"
Else
    MsgBox i & "行不为空"
End If
Next
2007版

Dim i As Long
For i = 1 To 10
If Application.WorksheetFunction.CountBlank(Range(i & ":" & i)) = 16384 Then
    MsgBox i & "行为空"
Else
    MsgBox i & "行不为空"
End If
Next

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-2-1 18:38 | 显示全部楼层
QUOTE:
以下是引用wangminbai在2008-2-1 18:33:51的发言:

这样吧

2003版

Dim i As Long
For i = 1 To 10
If Application.WorksheetFunction.CountBlank(Range(i & ":" & i)) = 256 Then
    MsgBox i & "行为空"
Else
    MsgBox i & "行不为空"
End If
Next
2007版

Dim i As Long
For i = 1 To 10
If Application.WorksheetFunction.CountBlank(Range(i & ":" & i)) = 16384 Then
    MsgBox i & "行为空"
Else
    MsgBox i & "行不为空"
End If
Next

谢谢

TA的精华主题

TA的得分主题

发表于 2008-2-1 22:52 | 显示全部楼层

WorksheetFunction.CountBlank 亦是无法判断 空格为空

现修改代码如下, Excel 2003 & Excel 2007均可用, 不会累死人

亦解决类型不匹配

Set aa = Range(Cells(3, 1), Cells(3, Cells.SpecialCells(xlLastCell).Column))

For Each a In aa

If Len(Trim(a)) > 0 Then

MsgBox " 不是空行"

GoTo 100

End If

Next

MsgBox "是空行"

100:

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-2-1 23:23 | 显示全部楼层
QUOTE:
以下是引用kowloon在2008-2-1 22:52:48的发言:

WorksheetFunction.CountBlank 亦是无法判断
   
空格为空

现修改代码如下, Excel 2003 & Excel 2007均可用, 不会累死人

亦解决类型不匹配

Set aa = Range(Cells(3, 1), Cells(3, Cells.SpecialCells(xlLastCell).Column))

For Each a In aa

If Len(Trim(a)) > 0 Then

MsgBox " 不是空行"

GoTo 100

End If

Next

MsgBox "是空行"

100:

谢谢, 这是完整代码吗, 怎么明明一行中某个单元格有数据, 还是会报"是空行"?

TA的精华主题

TA的得分主题

发表于 2008-2-1 23:30 | 显示全部楼层

判断1~10行是否空行:

Sub yy()
For i = 1 To 10
If Rows(i).Find("*") Is Nothing Then MsgBox i & "空行"
Next
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-2-1 23:38 | 显示全部楼层
QUOTE:
以下是引用oobird在2008-2-1 23:30:10的发言:

判断1~10行是否空行:

Sub yy()
For i = 1 To 10
If Rows(i).Find("*") Is Nothing Then MsgBox i & "空行"
Next
End Sub

谢谢老师, 您的方法较简单, 但还是 就是如果有空格, 还是判断为不空, 而我要求在只有空格的时也应判断为"空行"

另外能再给出代码, 就是如何判断所有数据行中的空行吗?

[此贴子已经被作者于2008-2-1 23:43:48编辑过]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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