Страницы: 1
RSS
Как определить что компонент с заданным именем присутствует в коллекции не перебирая все ее элементы
 
Можно ли как то определить что компонент с заданным именем присутствует в
коллекции не перебирая все ее элементы, например, именованный диапазон ячеек "Таблица1"
имеется на листе "Лист1" ?

Есть мысль проверить на ошибку "Run-time error '1004'", но как прописать такую проверку не знаю.
Изменено: R.S.P.C.T. - 22.04.2015 18:12:16
 
Если копнуть глубже, то от перебора не уйти. Любой метод(и Find, и словари и им подобные методы) - использует перебор. Другой вопрос насколько это будет быстро.

В Вашем случае можно так:
Код
Sub Test()
    On Error Resume Next
    Dim rr As ListObject
    Set rr = Sheets("Лист1").ListObjects("Таблица2")
    If rr Is Nothing Then
        MsgBox "Таблица2 отсутствует на листе 1", vbInformation
    End If
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Код
Sub Test()
    On Error Resume Next
    Dim rr As ListObject
    Set rr = Sheets("Лист1").Range("Таблица2[Столбец1]")
    If rr Is Nothing Then
        MsgBox "Таблица2 отсутствует на листе 1", vbInformation
    End If
End Sub

А вот такой код уже не работает. Подскажите пожалуйста, в чем ошибка?
Изменено: R.S.P.C.T. - 22.04.2015 21:52:12
 
В обращении к объектам
Код
Set rr = Sheets("Лист1").ListObjects("Таблица2").ListColumns("Столбец1").Range
 
Dim rr As Range вместо Dim rr As ListObject
Вот тут причина. И мой вариант и вариант RAN работает с этой правкой.
Всем спасибо!!! Вопрос закрыт.
Страницы: 1
Наверх