VBA-定位SpecialCells
‘定位’对话中的操作都能够用VBA代码(SpecialCells方法)来实现。
返回一个Range对象,该对象代表与指定类型及值相匹配的所有单元格。Range对象。
expression.SpecialCells(Type, Value)
expression 必需。该表达式返回“应用于”列表中的一个对象。
Type XlCellType 类型,必需。要包含的单元格。
- xlCellTypeAllFormatConditions 任意格式单元格 -4172
- xlCellTypeAllValidation 含有验证条件的单元格 -4174
- xlCellTypeBlanks 空单元格 4
- xlCellTypeComments 含有注释的单元格 -4144
- xlCellTypeConstants 含有常量的单元格 2
- xlCellTypeFormulas 含有公式的单元格 -4123
- xlCellTypeLastCell 使用区域中最后的单元格 11
- xlCellTypeSameFormatConditions 含有相同格式的单元格 -4173
- xlCellTypeSameValidation 含有相同验证条件的单元格 -4175
- xlCellTypeVisible 所有可见单元格 12
Value Variant 类型,可选。如果 Type 为 xlCellTypeConstants 或 xlCellTypeFormulas 之一, 此参数可用于确定结果中应包含哪几类单元格。将某几个值相加可使此方法返回多种类型的单元格。默认情况下,将选定所有常量或公式,对其类型不加区别。可为以下XlSpecialCellsValue 常量之一:
- xlErrors 16
- xlLogical 4
- xlNumbers 1
- xlTextValues 2
最后一个单元格
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
删除数字(没有数字的时候,下面语句会返回错误,因此需要On Error Resume Next,有错误也继续执行语句。另外,Excel中日期也会被认为是数字,所以上面代码会删除日期。)
Sub 删除数字()
On Error Resume Next
Cells.SpecialCells(xlCellTypeConstants, xlNumbers).ClearContents
End Sub
自动筛选--获取可见行
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
发布于 2020-04-04 14:48