Можно ли как то определить что компонент с заданным именем присутствует в коллекции не перебирая все ее элементы, например, именованный диапазон ячеек "Таблица1" имеется на листе "Лист1" ?
Есть мысль проверить на ошибку "Run-time error '1004'", но как прописать такую проверку не знаю.
Если копнуть глубже, то от перебора не уйти. Любой метод(и 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
А вот такой код уже не работает. Подскажите пожалуйста, в чем ошибка?