是否有可能有一个空的 Excel 范围集合,即它是否恰好有一个 Excel.Range 类型的对象 obj 使得
obj.Cells.Count = 0
我有强烈的感觉,这是不可能的。
请给出确实不可能的权威参考资料,或提供反例。
我认为这将部分回答您的问题。
除此之外,我只能说所有对象都必须是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
Range 对象表示一个或多个单元格,可用于表示单个单元格、一行、一列、包含一个或多个连续单元格块的单元格选择或 3-D 范围。
空范围的正确表示是 Nothing。例如:
Debug.Print Intersect(Range("A1"), Range("B1")) Is Nothing
True
所以你的函数应该返回 Nothing。虽然有空集合这样的东西,但 Range 不能是空集合。