首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Range.SpecialCells: xlCellTypeBlanks实际上代表什么?

Range.SpecialCells: xlCellTypeBlanks实际上代表什么?
EN

Stack Overflow用户
提问于 2018-04-19 15:02:14
回答 2查看 10K关注 0票数 2

Range.SpecialCells法可用于返回满足特定条件的Range对象。条件的类型使用xlCellType常量指定。

其中一个常量(xlCellTypeBlanks)被描述为使用不作进一步阐述引用“空单元格”。

有人知道这个方法使用什么定义的“空”吗?它是否包括没有值/公式但有各种其他功能(数据验证、常规格式、条件格式等)的单元格?

EN

回答 2

Stack Overflow用户

发布于 2018-04-19 15:12:41

该类型包括范围内既不包含常数也不包含公式的单元格子集。从一个空表开始,我们在A1A10中放了一些东西,然后运行:

代码语言:javascript
复制
Sub ExtraSpecial()
Set r = Range("A:A").SpecialCells(xlCellTypeBlanks)
MsgBox r.Count
End Sub

我们得到:

格式和注释不包括在内。还请注意,A10下面的所有“空”单元格也将被忽略。

票数 4
EN

Stack Overflow用户

发布于 2019-01-22 17:51:19

帕帕勒夫的回答指出,"xlCellTypeBlanks“排除了与特殊单元格类型"xlCellTypeLastCell”相同的计算“使用范围”的特定版本中的任何单元格。通过测试,我发现"xlCellTypeLastCell“返回"UsedRange”属性上一次计算时的最后一个单元格。

换句话说,添加引用"UsedRange“的行实际上会改变SpecialCells方法的行为。这是如此不寻常/出乎意料的行为,我想我应该添加一个答案来记录它。

代码语言:javascript
复制
Sub lastCellExample()

    Dim ws As Worksheet
    Set ws = Sheets.Add
    ws.Range("A1").Value = "x"
    ws.Range("A5").Value = "x"
    ws.Range("A10").Value = "x"

    'Initially the "UsedRange" and calculated used range are identical
    Debug.Print ws.UsedRange.Address
    '$A$1:$A$10

    Debug.Print ws.Range(ws.Range("A1"), _
                ws.Cells.SpecialCells(xlCellTypeLastCell)).Address
    '$A$1:$A$10

    Debug.Print ws.Cells.SpecialCells(xlCellTypeBlanks).Address
    '$A$2:$A$4,$A$6:$A$9


    'After deleting a value, "UsedRange" is recalculated, but the last cell is not...
    ws.Range("A10").Clear
    Debug.Print ws.Range(ws.Range("A1"), _
                ws.Cells.SpecialCells(xlCellTypeLastCell)).Address
    '$A$1:$A$10

    Debug.Print ws.Cells.SpecialCells(xlCellTypeBlanks).Address
    '$A$2:$A$4,$A$6:$A$10

    Debug.Print ws.UsedRange.Address
    '$A$1:$A$5


    '...until you try again after referencing "UsedRange"
    Debug.Print ws.Range(ws.Range("A1"), _
                ws.Cells.SpecialCells(xlCellTypeLastCell)).Address
    '$A$1:$A$5

    Debug.Print ws.Cells.SpecialCells(xlCellTypeBlanks).Address
    '$A$2:$A$4

End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49924308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档