4

是否有可能有一个空的 Excel 范围集合,即它是否恰好有一个 Excel.Range 类型的对象 obj 使得

obj.Cells.Count = 0

我有强烈的感觉,这是不可能的。

请给出确实不可能的权威参考资料,或提供反例。

4

2 回答 2

1

我认为将部分回答您的问题。
除此之外,我只能说所有对象都必须是Set才能在它们上调用任何类型的方法。这是OOP概念的基础。例如,您可以拥有任何类型的对象,
Dim obj as Range
Dim obj as Application
Dim obj as Long
但它实际上只是内存中为该变量保留的空间,并且正在等待分配引用。
所以答案很简单:不,不可能有一个空的范围对象集。
自己检查一下:

Sub RangeTest()
    Dim rng As Range
    'Set rng = Range("A1")
    ActiveWorkbook.Names.Add Name:="rngName", RefersTo:=rng.Address
    MsgBox "count: " & rng.Cells.Count
End Sub

显然以上失败了,但是 »

Sub RangeTest()
    Dim rng As Range
    Set rng = Range("A1")
    ActiveWorkbook.Names.Add Name:="rngName", RefersTo:=rng.Address
    MsgBox "count: " & rng.Cells.Count
End Sub


Excel 2010 范围对象的开发人员指南 也 明确指出

Range 对象表示一个或多个单元格,可用于表示单个单元格、一行、一列、包含一个或多个连续单元格块的单元格选择或 3-D 范围。

于 2013-07-05T08:55:59.553 回答
0

空范围的正确表示是 Nothing。例如:

Debug.Print Intersect(Range("A1"), Range("B1")) Is Nothing
True

所以你的函数应该返回 Nothing。虽然有空集合这样的东西,但 Range 不能是空集合。

于 2020-10-29T15:23:47.957 回答