Как избавиться от ошибки н/д в цикле - VBA
Формулировка задачи:
Есть список, нужно маркировать члены этого списка в соответствии со списком на другом листе буквой B, если они есть в этом списке. В Exel работает элементарная формула:
=ЕСЛИ(B1=ИНДЕКС(Список!$A$2:$A$38;ПОИСКПОЗ(B1;Список!$A$2:$A$38;0);1);"B";0)
В VBA она не работает никак, потому что если наименование не присутствует во втором списке, стоит ошибка н/д, и цикл спотыкается на первом же члене. Вариации с Err у меня не получаются. Или цикл не идет, или работает неправильно. Что делать в этом случае?
Файл примера прилагается.
Решение задачи: «Как избавиться от ошибки н/д в цикле»
textual
Листинг программы
Sub tt()
Dim a(), i&
With CreateObject("Scripting.Dictionary")
.CompareMode = 1
a = Sheets("Список").[A1].CurrentRegion.Value
For i = 1 To UBound(a)
.Item(Trim(a(i, 1))) = vbNullString
Next
a = Sheets("Лист1").[A1].CurrentRegion.Columns(2).Value
ReDim b(1 To UBound(a), 1 To 1)
For i = 1 To UBound(a)
If .exists(Trim(a(i, 1))) Then b(i, 1) = "B"
Next
End With
Sheets("Лист1").[C1].Resize(UBound(b), 1) = b
End Sub