2016-03-06 2 views
1

вечера SO,Excel VBA - зацикливание ListObject Колонок

Я пытаюсь Переберите определенный столбец в таблице ListObject. Я выполнил это и отлично работает EXCEPT, если столбец пуст (т. Е. Таблица не имеет строк). Это было бы очень редко, но, естественно, основная копия этой книги была бы пустой и поэтому возвращает ошибку 91 для нулевого объекта.

Как я могу сделать код выполненным, даже если таблица пуста, не возвращая ошибку 91? Я знаю, что могу использовать On Error Resume Next, но это похоже на снятие болеутоляющих, и это не решает проблему.

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

выше код выполняется нормально, если таблица содержит данные, но выдает ошибку 91, если таблица пустая, как он всегда будет находиться в главной копии.

+0

Почему бы не проверить на кол? Если ничего нет, то просто ничего не делайте ... –

+0

Я мог бы, конечно, использовать этот подход, однако я подумал, что, безусловно, есть способ, которым вы можете проверить значение Null, а не подсчитывать, что может стать тысячами строк. – iShaymus

+0

Уверен, вы также могли бы использовать 'If Not TheRangeToCheck ничего не значит ', чтобы гарантировать, что диапазон не равен null ... –

ответ

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 
Смежные вопросы