大家都知道,如果要获得一个区域中包含的空的单元格,可以用编辑/定位/定位条件中的空值来获得,而对应的VBA代码就是——单元格Range.SpecialCells(xlCellTypeBlanks),来获得,但要获得一个区域的非空单元格,反而没有直接的办法,这两天在做一个系统,也要用到此功能,感觉还是比较常用与实用,就上传上来与大家分享。
Function GetCellTypeNotBlanks(Target As Range) As Range
'*******************************************
'时间:2008-4-20
'作者:bengdeng
'功能:获得指定单元格区域中的所有非空单元格
'发布:http://www.excelba.com
'*******************************************
Dim TRan As Range, RRan As Range
On Error Resume Next
Set TRan = Target.Parent.UsedRange.Item(ActiveSheet.UsedRange.Count).Offset(1, 0)
Set RRan = Union(TRan, Target)
Set GetCellTypeNotBlanks = RRan.ColumnDifferences(TRan)
End Function
上面是一个自定义函数,假设要获得选定区域的所有非空单元格,可以:
Sub test()
If GetCellTypeNotBlanks(Selection) Is Nothing Then
MsgBox "没有非空单元格!"
Else
GetCellTypeNotBlanks(Selection).Select
End If
End Sub