2016-03-06 138 views
1

晚上SO,Excel VBA - 循环列表对象列

我想循环访问listobject表中的特定列。我已经执行了这个,并且它完美的工作,除非列是空的(即表没有行)。这将是非常罕见的,但自然此工作簿的主副本将是空白的,因此返回空对象的错误91。

即使表格为空而没有返回错误91,我该如何让代码执行?我知道我可以使用On Error Resume Next,但这就像使用止痛药,它不能解决问题。如果表中包含的数据,但将引发错误91如果表为空,因为它总是会在主副本

For Each cell In Worksheets(3).ListObjects("tblTableName").ListColumns(2).DataBodyRange.Cells 
    'Do some stuff here 
Next 

上面的代码执行精细。

+0

为什么不检查计数?如果什么都没有,那么就不要做任何事...... –

+0

我当然可以使用这种方法,但是我认为肯定有一种方法可以检查一个空值,而不是计算最终可能会有数千个行。 – iShaymus

+0

当然,你也可以使用'如果不是TheRangeToCheck是Nothing Then'以确保范围不为空... –

回答

0

此代码为我工作:

Sub test() 
Dim L As ListObject 

Set L = Range("a1").ListObject 

Dim q As Range 
Set q = L.DataBodyRange 

If Not q Is Nothing Then 
    MsgBox "There's something!" 
Else 
    MsgBox "There's nothing!" 
End If 

End Sub 

还可以使用:

Dim m As Boolean 

m = L.DataBodyRange Is Nothing