Excel VBA: Проверка выбранных строк в умной таблице

Автор Посетитель, 13 февраля 2017, 14:48

Посетитель

 Как исправить процедуру, если в умной таблице в столбце "выбор" нет выбранных строк.

If Not IsEmpty(.Cells(Range("v").Column)) Then MsgBox "Строк для обработки не выделено", vbCritical: Exit Sub
"v" - именованный диапазон откуда выбираются записи.

Администратор

Могу предложить три способа обращения к столбцу в вашем случае (возможно можно найти ещё способы обращения к умной таблице).
А проверку удобно сделать с помощью эксель-функции "CountA" (СЧЁТЗ).

Способ 1. Обращение к имени "v", которое вы создали в файле.
Sub Макрос()
    If WorksheetFunction.CountA(Range("v")) = 0 Then
        MsgBox "Строк для обработки не выделено", vbCritical
        Exit Sub
    End If
End Sub
[свернуть]

Способ 2. Обращение к умной таблице с использованием объекта "ListObject".
Sub Макрос2()
    Dim tbl As ListObject
    ' Присваивание умной таблице имени "tbl", чтобы затем удобно
        ' обращаться к умной таблице по этому имени в коде.
        ' Вместо "1" можно указать имя умной таблицы.
        ' Имя умной таблицы можно посмотреть здесь: контекстная владка "Конструктор" - Имя таблицы.
    Set tbl = ActiveSheet.ListObjects(1)
    If WorksheetFunction.CountA(tbl.DataBodyRange.Columns(2)) = 0 Then
        MsgBox "Строк для обработки не выделено", vbCritical
        Exit Sub
    End If
End Sub
[свернуть]

Способ 3. Обращение к умной таблице по специальным именам внутри объекта "Range".
Sub Макрос3()
    If WorksheetFunction.CountA(Range("Таблица1[Выбор]")) = 0 Then
        MsgBox "Строк для обработки не выделено", vbCritical
        Exit Sub
    End If
End Sub
[свернуть]

Посетитель

Спасибо всем!
Ответом удовлетворён. Тему можно закрывать.