VBA-定位SpecialCells

VBA-定位SpecialCells

‘定位’对话中的操作都能够用VBA代码(SpecialCells方法)来实现。

返回一个Range对象,该对象代表与指定类型及值相匹配的所有单元格。Range对象。

expression.SpecialCells(Type, Value)

expression 必需。该表达式返回“应用于”列表中的一个对象。

Type XlCellType 类型,必需。要包含的单元格。

  1. xlCellTypeAllFormatConditions 任意格式单元格 -4172
  2. xlCellTypeAllValidation 含有验证条件的单元格 -4174
  3. xlCellTypeBlanks 空单元格 4
  4. xlCellTypeComments 含有注释的单元格 -4144
  5. xlCellTypeConstants 含有常量的单元格 2
  6. xlCellTypeFormulas 含有公式的单元格 -4123
  7. xlCellTypeLastCell 使用区域中最后的单元格 11
  8. xlCellTypeSameFormatConditions 含有相同格式的单元格 -4173
  9. xlCellTypeSameValidation 含有相同验证条件的单元格 -4175
  10. xlCellTypeVisible 所有可见单元格 12

Value Variant 类型,可选。如果 Type 为 xlCellTypeConstants 或 xlCellTypeFormulas 之一, 此参数可用于确定结果中应包含哪几类单元格。将某几个值相加可使此方法返回多种类型的单元格。默认情况下,将选定所有常量或公式,对其类型不加区别。可为以下XlSpecialCellsValue 常量之一:

  1. xlErrors 16
  2. xlLogical 4
  3. xlNumbers 1
  4. 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