在excel中用VBA如何实现对非空单元格行数的统计。

如题所述

最好用工作表函数
Sub 统计非空单元格()
x = 0
For Each l In Rows
x = x + IIf(WorksheetFunction.CountA(l) > 0, 1, 0)
Next l
MsgBox x
End Sub追问

你好,看得懂这句是什么意思吗?Debug.Print Sheet3.UsedRange.Rows.Count

追答

Sheet3.UsedRange.Rows.Count是统计表单Sheet3已使用区域的行数
如果在一个全空的表单Sheet3第6行和第8行的任意列输入任意值
Sheet3.UsedRange.Rows.Count会返回3,因为第7行属于已使用区域,即使第7行全空,也会统计到已用区域的行数中去。
Debug.Print是调试命令,它返回的值在立即窗口显示
Debug.Print Sheet3.UsedRange.Rows.Count的意思是在立即窗口显示表单Sheet3已使用区域的行数。

“运行时弹出对话框,要求对象?”是因为你的宏过程里出现了“箱单.Select”
如果“箱单”是表单的名称,应该改为Sheets("箱单").Select

追问

现在我明白了,经过使用,你的代码是可行的,真是谢谢了。还有就是一张全空的表单,在立即窗口居然出现31,也就是说使用行数是31?不知道是为什么?我的理解应该是0才对。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-21
Sheet3.Select
Debug.Print Sheet3.UsedRange.Rows.Count追问

请问如果我想把值赋给一个变量,可以做到吗

追答

你把这个值赋给变量就行了啊。也可以直接使用

追问

Sub 统计非空单元格()
箱单.Select
Debug.Print Sheet3.UsedRange.Rows.Count
End Sub
运行时弹出对话框,要求对象?

追答

VBA你一点不懂?

相似回答