您可以使用 Excel VBA 快速选择包含特定类型数据的单元格,就像使用“定位”命令一样。大多数【定位】命令使用 SpecialCells 方法,如果您想学习其他选择单元格区域的方法,请阅读:使用 VBA 选择单元格区域常用代码。
Range.SpecialCells 方法
语法
SpecialCells (Type, Value)
参数
名称 | 必需/可选 | 数据类型 | 说明 |
---|---|---|---|
Type | 必需 | XlCellType | 要包含的单元格。 |
Value | 可选 | Variant | 如果 Type 是 xlCellTypeConstants 或 xlCellTypeFormulas,则此参数用于确定结果中要包含的单元格类型。将这些值相加可返回多种类型的单元格。默认情况下,将选择所有常量或公式,无论类型如何。 |
其中 XlCellType 常量取值如下表所示:
XlCellType 常量 | 值 | 说明 |
---|---|---|
xlCellTypeAllFormatConditions | -4172 | 任意格式的单元格。 |
xlCellTypeAllValidation | -4174 | 含有验证条件的单元格。 |
xlCellTypeBlanks | 4 | 空单元格。 |
xlCellTypeComments | -4144 | 含有注释的单元格。 |
xlCellTypeConstants | 2 | 含有常量的单元格。 |
xlCellTypeFormulas | -4123 | 含有公式的单元格。 |
xlCellTypeLastCell | 11 | 所用区域中的最后一个单元格。 |
xlCellTypeSameFormatConditions | -4173 | 格式相同的单元格。 |
xlCellTypeSameValidation | -4175 | 验证条件相同的单元格。 |
xlCellTypeVisible | 12 | 所有可见单元格。 |
批注
以下示例在整个工作表中选择包含批注的单元格:
Cells.SpecialCells(xlCellTypeComments).Select
以下示例选择单元格区域 A1:E20 中包含批注的单元格:
Range("A1:E20").SpecialCells(xlCellTypeComments).Select
常量
如果 SpecialCells 的 Type 为 xlCellTypeConstants,可以使用 XlSpecialCellsValue 枚举指定要包含在结果中的具有特定类型的值的单元格。
xlCellTypeConstants 参数值可以相加以返回多种类型。
XlSpecialCellsValue 常量 | 值 | 说明 |
---|---|---|
xlErrors | 16 | 有错误的单元格。 |
xlLogical | 4 | 具有逻辑值的单元格。 |
xlNumbers | 1 | 具有数值的单元格。 |
xlTextValues | 2 | 具有文本的单元格。 |
在整个工作表中选择包含常量的单元格:
Cells.SpecialCells(xlCellTypeConstants, 23).Select
=
Cells.SpecialCells(xlCellTypeConstants).Select
在整个工作表中选择包含文本的单元格:
Cells.SpecialCells(xlCellTypeConstants, 2).Select
在活动工作表的使用单元格区域中选择包含数值的单元格:
ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants, 1).Select
在整个工作表中选择包含逻辑值的单元格:
Cells.SpecialCells(xlCellTypeConstants, 4).Select
在整个工作表中选择包含错误的单元格:
Cells.SpecialCells(xlCellTypeConstants, 16).Select
公式
如果 SpecialCells 的 Type 为 xlCellTypeFormulas,可以使用 XlSpecialCellsValue 枚举指定要包含在结果中的具有特定类型的值的单元格。
xlCellTypeFormulas 参数值可以相加以返回多种类型:
XlSpecialCellsValue 常量 | 值 | 说明 |
---|---|---|
xlErrors | 16 | 有错误的单元格。 |
xlLogical | 4 | 具有逻辑值的单元格。 |
xlNumbers | 1 | 具有数值的单元格。 |
xlTextValues | 2 | 具有文本的单元格。 |
在整个工作表中选择包含公式的单元格:
Cells.SpecialCells(xlCellTypeFormulas, 23).Select
=
Cells.SpecialCells(xlCellTypeFormulas).Select
在整个工作表中选择公式值为文本的单元格:
Cells.SpecialCells(xlCellTypeFormulas, 2).Select
在活动工作表的使用单元格区域中选择公式值为数值的单元格:
ActiveSheet.UsedRange.SpecialCells(xlCellTypeFormulas, 1).Select
在整个工作表中选择公式值为逻辑值的单元格:
Cells.SpecialCells(xlCellTypeFormulas, 4).Select
在整个工作表中选择公式值为错误值的单元格:
Cells.SpecialCells(xlCellTypeFormulas, 16).Select
空值
在整个工作表中选择空白单元格:
Cells.SpecialCells(xlCellTypeBlanks).Select
选择单元格区域 B2:J20 中的空白单元格:
Range("B2:J20").SpecialCells(xlCellTypeBlanks).Select
=
ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Select
当前区域
选择单元格 A1 周围的矩形单元格区域:
Range("A1").CurrentRegion.Select
当前数组
如果活动单元格包含在数组中,则选择整个数组:
ActiveCell.CurrentArray.Select
对象
选择所有图形对象,包括活动工作表上的图表和按钮:
ActiveSheet.DrawingObjects.Select
DrawingObjects
对象似乎是被 Excel 隐藏了,无法在对象浏览器里找到,但是代码确实可用。
比如删除当前活动工作表的所有对象可用下列语句:
ActiveSheet.DrawingObjects.Delete
行内容差异单元格
选择第一行中与 A1 不同的值的单元格:
Rows(1).RowDifferences(Range("A1")).Select
列内容差异单元格
选择 A 列中与 A1 不同的值的单元格:
Columns("A").ColumnDifferences(Range("A1")).Select
引用单元格
选择单元格 A1 的所有引用单元格:
Range("A1").Precedents.Select
选择单元格 A1 的直接引用单元格:
Range("A1").DirectPrecedents.Select
从属单元格
选择单元格 A1 的从属单元格:
Range("A1").Dependents.Select
选择单元格 A1 的直接从属单元格:
Range("A1").DirectDependents.Select
最后一个单元格
选择使用单元格区域内的最后一个单元格:
Cells.SpecialCells(xlCellTypeLastCell).Select
可见单元格
选择使用单元格区域内的可见单元格(试着隐藏一些行和列查看效果):
ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Select
条件格式
选择所有应用了条件格式的单元格:
Cells.SpecialCells(xlCellTypeAllFormatConditions).Select
选择与单元格 A1 具有相同条件格式的单元格。
Range("A1").SpecialCells(xlCellTypeSameFormatConditions).Select
数据验证
选择应用了数据验证的所有单元格:
Cells.SpecialCells(xlCellTypeAllValidation).Select
选择与单元格 A1 具有相同数据验证的单元格:
Range("A1").SpecialCells(xlCellTypeSameValidation).Select