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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
posted @ 2020-05-23 21:19  天涯海角路  阅读(1508)  评论(0编辑  收藏  举报