特殊的东西总是会得到特别的照顾。在Excel中,可以使用“定位条件”来选择一些特定的单元格,例如空单元格、带有批注的单元格、当前区域,等等。

下图所示为带有空单元格的工作表,我们要选择这些空单元格。这时,可以调出“定位条件”对话框,选取“空值”按钮,单击“确定”即可。

快速定位到特定的单元格——SpecialCells方法

如果将上述操作使用宏录制器录制下来,则录制的代码如下:

‘ 宏1 宏

Selection.SpecialCells(xlCellTypeBlanks).Select

End Sub

从代码中可以看出,Excel使用了Range对象的SpecialCells方法并指定适当的参数值来达到选取工作表中所有空单元格的目的。这里,对应“空值”的参数值为xlCellTypeBlanks。那么,上图所示的对话框中的其它的单选按钮应该也对应着相应的参数值,来选择相应的单元格,如下图所示。

快速定位到特定的单元格——SpecialCells方法

下面是SpecialCells方法的语法:

Range对象.SpecialCells(Type,Value)

说明:

返回一个Range对象,代表与参数Type和Value指定的值相匹配的所有单元格。

参数Type是必须的,其参数值及相应的含义在上图中已标明。

参数Value可选,与xlCellTypeConstants(常量)或xlCellTypeFormulas(公式)配合使用来进一步确定所选单元格的类型。该参数的值可以自由组合。

在《Excel VBA解读(36):快速移动单元格——End属性》中,我们使用End属性来确定一列或一行中的最后一个被使用的单元格。之所以要找到最后一个单元格,很多情形下是因为我们要确定用于填充数据的下一个空行或空列,这里我们也可以使用SpecialCells方法来确定最后一个单元格。

如下图所示的工作表,运行下面的代码显示最后一个单元格为C7。

快速定位到特定的单元格——SpecialCells方法

Sub testSpecialCells()

Dim rng As Range ‘声明单元格对象

Set rng =Selection.SpecialCells(xlCellTypeLastCell)

MsgBox “工作表中最后一个单元格是”& _

rng.Address(RowAbsolute:=False,ColumnAbsolute:=False)

End Sub

可以看出,SpecialCells方法得到的是工作表中行列值最大的单元格,即使该区域中包含有空行或空列。

发表回复