是否可以有一个空的Excel范围集合,即它可能碰巧有一个Excel.Range类型的对象obj,以便
obj.Cells.Count = 0
我有强烈的感觉,这是不可能的。
请提供权威的参考资料,确实不可能,或提供一个反例。
答案 0 :(得分:1)
我认为this将部分回答您的问题。
我可以说最重要的是所有对象必须是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
<小时/> 也 Developer’s Guide to the Excel 2010 Range Object明确指出
Range对象表示一个或多个单元格,可用于 表示单个单元格,行,列,选择的单元格 包含一个或多个连续的细胞块,或3-D范围。
答案 1 :(得分:0)
空范围的正确表示是Nothing。 例如:
Debug.Print Intersect(Range("A1"), Range("B1")) Is Nothing
True
因此您的函数应返回Nothing。 尽管有一个空集合,但Range不能是一个空集合。