可以清空Excel范围集合吗?

时间:2013-07-05 08:29:41

标签: excel excel-vba vba

是否可以有一个空的Excel范围集合,即它可能碰巧有一个Excel.Range类型的对象obj,以便

obj.Cells.Count = 0

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

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

2 个答案:

答案 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不能是一个空集合。