2013-07-05 67 views
4

是否有可能有一个空的Excel范围集合,即它可以发生在有一个对象obj类型Excel.Range,使得空的Excel范围集合可能吗?

obj.Cells.Count = 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明确规定

范围对象代表一个或多个单元,并可以用来代表 单个单元,一行,一列,包含一个或多个连续的单元块或三维范围的单元选择。

+0

该问题要求Range类型的对象,因为该变量必须分配,而不仅仅是声明。然而,你在最后一部分提供的参考文献回答了这个问题。 –

+3

你可以通过删除单元格来取得无效的'Range' - 参见[这个问题](http://stackoverflow.com/questions/12127311/vba-what-happens-to-range-objects-if-user-deletes - 细胞) – barrowc

+0

@barrowc多数民众赞成在一个伟大的联系! – 2013-07-05 11:48:34