特殊的东西总是会得到特别的照顾。在Excel中,可以使用“定位条件”来选择一些特定的单元格,例如空单元格、带有批注的单元格、当前区域,等等。
下图所示为带有空单元格的工作表,我们要选择这些空单元格。这时,可以调出“定位条件”对话框,选取“空值”按钮,单击“确定”即可。
如果将上述操作使用宏录制器录制下来,则录制的代码如下:
‘ 宏1 宏
‘
‘
Selection.SpecialCells(xlCellTypeBlanks).Select
End Sub
从代码中可以看出,Excel使用了Range对象的SpecialCells方法并指定适当的参数值来达到选取工作表中所有空单元格的目的。这里,对应“空值”的参数值为xlCellTypeBlanks。那么,上图所示的对话框中的其它的单选按钮应该也对应着相应的参数值,来选择相应的单元格,如下图所示。
下面是SpecialCells方法的语法:
Range对象.SpecialCells(Type,Value)
说明:
返回一个Range对象,代表与参数Type和Value指定的值相匹配的所有单元格。
参数Type是必须的,其参数值及相应的含义在上图中已标明。
参数Value可选,与xlCellTypeConstants(常量)或xlCellTypeFormulas(公式)配合使用来进一步确定所选单元格的类型。该参数的值可以自由组合。
在《Excel VBA解读(36):快速移动单元格——End属性》中,我们使用End属性来确定一列或一行中的最后一个被使用的单元格。之所以要找到最后一个单元格,很多情形下是因为我们要确定用于填充数据的下一个空行或空列,这里我们也可以使用SpecialCells方法来确定最后一个单元格。
如下图所示的工作表,运行下面的代码显示最后一个单元格为C7。
Sub testSpecialCells()
Dim rng As Range ‘声明单元格对象
Set rng =Selection.SpecialCells(xlCellTypeLastCell)
MsgBox “工作表中最后一个单元格是”& _
rng.Address(RowAbsolute:=False,ColumnAbsolute:=False)
End Sub
可以看出,SpecialCells方法得到的是工作表中行列值最大的单元格,即使该区域中包含有空行或空列。