Как избавиться от ошибки н/д в цикле - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д