Добрый вечер! Помогите плиз. Есть такой цикл с find (в упрощенном виде приведен ниже) суть - найти все ячейки удовлетворяющие условию (равные 1) на листе "ассортимент", найдя ячейку и получив переменную code через Offset найти ее на другом листе и опять через Offset получить еще одну переменную bazprise. Все это сложить на 3-м листе, после чего вернуться на лист "ассортимент" и найти следующую ячейку равную 1 Без вложенного поиска bazprise на другом листе все работает на ура. С вложенным на этапе Set art = .FindNext(art) Loop While Not art Is Nothing And art.Address <> firstAddress art становится равен Nothing и на строке с Loop While... вылазит ошибка Run-Time 91 Object variable or... Не хватает сил и времени понять где теряется значение art
Код
Worksheets("ассортимент").Activate
With Range("a2", "a" & LastRowN)
Set art = .Find("1")
If Not art Is Nothing Then
firstAddress = art.Address
Do
code = art.Offset(0, 3)
Worksheets("прайслист").Activate
If Not Range("b7", "b1500").Find(code, LookAt:=xlWhole) Is Nothing Then
bazprise = Range("b7", "b1500").Find(code, LookAt:=xlWhole).Offset(0, 3)
Else: bazprise = "не найдено"
End If
Worksheets("комм").Activate
ActiveCell = Count + 1
Count = ActiveCell.Value
ActiveCell.Offset(0, 6) = (bazprise - (bazprise * 20 / 120)) * curs
ActiveCell.Offset(1, 0).Activate
Worksheets("ассортимент").Activate
Set art = .FindNext(art)
Loop While Not art Is Nothing And art.Address <> firstAddress
End If
End With
dim ra as range
set ra = FindAll(Worksheets("ассортимент").range("a:a"), "1")
Dim cell As Range
For Each cell In ra.Cells
' обрабатываем очередную найденную ячейку
Next cell