14、[VBA入门到放弃笔记] SpecialCells方法
-
定位’对话中的操作都能够用VBA代码(SpecialCells方法)来实现。
- SpecialCells方法官方文档说明。
返回一个Range对象,该对象代表与指定类型及值相匹配的所有单元格。Range对象。
expression.SpecialCells(Type, Value)
|expression 必需。该表达式返回“应用于”列表中的一个对象。|
|---|---|
|Type XlCellType 类型,必需。要包含的单元格。|
|XlCellType 可为以下 XlCellType 常量之一。|
|xlCellTypeAllFormatConditions 任意格式单元格|
|xlCellTypeAllValidation 含有验证条件的单元格|
|xlCellTypeBlanks 空单元格|
|xlCellTypeComments 含有注释的单元格|
|xlCellTypeConstants 含有常量的单元格|
|xlCellTypeFormulas 含有公式的单元格|
|xlCellTypeLastCell 使用区域中最后的单元格|
|xlCellTypeSameFormatConditions 含有相同格式的单元格|
|xlCellTypeSameValidation 含有相同验证条件的单元格|
|xlCellTypeVisible 所有可见单元格|
Value Variant 类型,可选。如果 Type 为 xlCellTypeConstants 或 xlCellTypeFormulas 之一, 此参数可用于确定结果中应包含哪几类单元格。将某几个值相加可使此方法返回多种类型的单元格。默认情况下,将选定所有常量或公式,对其类型不加区别。可为以下 |
---|
XlSpecialCellsValue 常量之一: |
XlSpecialCellsValue 可为以下 XlSpecialCellsValue 常量之一。 |
xlErrors |
xlLogical |
xlNumbersxlTextValues |
- 最后一个单元格
Sub 最后一个单元格()
Dim Rng As Range, LastRow As Long, LastCol As Long
Set Rng = Range("a1").SpecialCells(xlCellTypeLastCell)'返回最后一个单元格
LastRow = Rng.Row'最后一个单元格的行号
LastCol = Rng.Column'最后一个单元格的列号
End Sub
- 删除数字
Sub 删除数字()
On Error Resume Next
Cells.SpecialCells(xlCellTypeConstants, xlNumbers).ClearContents
End Sub
- 没有数字的时候,上面语句会返回错误,因此需要On Error Resume Next,有错误也继续执行语句。另外,Excel中日期也会被认为是数字,所以上面代码会删除日期。
练习:自动筛选--获取可见行(数据)
Sub 获取可见数据()
Dim LastRow As Long
Dim Rng As Range, Rng1 As Range
With ActiveSheet
.UsedRange
LastRow = .Cells.SpecialCells(xlCellTypeLastCell).Row '返回最后一行行号
Set Rng = .Range("A1:C" & LastRow)'获取数据区域
Rng.AutoFilter Field:=2, Criteria1:="A" '筛选B列,部门为A的数据
Set Rng1 = Rng.SpecialCells(xlCellTypeVisible) '获取可见行数据(筛选的数据)
Rng.AutoFilter '关闭自动筛选
Rng1.Copy .Range("F1") '复制可见数据到单元格F1
End With
End Sub
作者:叶知行
链接:https://www.jianshu.com/p/9be8bff6b595
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。