Хочу сделать так, чтобы искалось по определенным условиями кроме совпадения названия. Но проблема в том, что когда функция Find находит совпадение, то передает управление FindNext. А FindNext уже не учитывает If где делается сравнение.... Вот код:
[vba]
Код
With Worksheets("Лист4").Range("H6:H" & j, "S6:S" & j) 'ищем в этих диапозонах Set result = .Find(What:=Worksheets("Лист3").Range("d2").Offset(r, 0).Value, LookIn:=xlValues) 'это хочу найти
If Not result Is Nothing Then
firstAddress = result.Address 'запоминаем адрес первой найденной ячейки
If Worksheets("Лист3").Range("c2").Offset(r, 0).Value = result.Offset(0, 22).Value Then 'сравнение
Loop While Not result Is Nothing And result.Address <> firstAddress 'выход из цикла при переходе снова на первую
End If
End If
End With
[/vba]
Хочу сделать так, чтобы искалось по определенным условиями кроме совпадения названия. Но проблема в том, что когда функция Find находит совпадение, то передает управление FindNext. А FindNext уже не учитывает If где делается сравнение.... Вот код:
[vba]
Код
With Worksheets("Лист4").Range("H6:H" & j, "S6:S" & j) 'ищем в этих диапозонах Set result = .Find(What:=Worksheets("Лист3").Range("d2").Offset(r, 0).Value, LookIn:=xlValues) 'это хочу найти
If Not result Is Nothing Then
firstAddress = result.Address 'запоминаем адрес первой найденной ячейки
If Worksheets("Лист3").Range("c2").Offset(r, 0).Value = result.Offset(0, 22).Value Then 'сравнение
это все потому, что проверка стоит снаружи цикла. Перенесите ее вовнутрь и будет все ок [vba]
Код
With Worksheets("Лист4").Range("H6:H" & j, "S6:S" & j) 'ищем в этих диапозонах Set result = .Find(What:=Worksheets("Лист3").Range("d2").Offset(r, 0).Value, LookIn:=xlValues) 'это хочу найти If Not result Is Nothing Then firstAddress = result.Address 'запоминаем адрес первой найденной ячейки Do If Worksheets("Лист3").Range("c2").Offset(r, 0).Value = result.Offset(0, 22).Value Then 'сравнение 'Обрабатываем найденную ячейку Worksheets("Лист3").Range("g2").Offset(r, 0).Value = result.Offset(0, -6).Value 'client End If Set result = .FindNext(result) 'ищем следующую Loop While Not result Is Nothing And result.Address <> firstAddress 'выход из цикла при переходе снова на первую End If End With
[/vba]
это все потому, что проверка стоит снаружи цикла. Перенесите ее вовнутрь и будет все ок [vba]
Код
With Worksheets("Лист4").Range("H6:H" & j, "S6:S" & j) 'ищем в этих диапозонах Set result = .Find(What:=Worksheets("Лист3").Range("d2").Offset(r, 0).Value, LookIn:=xlValues) 'это хочу найти If Not result Is Nothing Then firstAddress = result.Address 'запоминаем адрес первой найденной ячейки Do If Worksheets("Лист3").Range("c2").Offset(r, 0).Value = result.Offset(0, 22).Value Then 'сравнение 'Обрабатываем найденную ячейку Worksheets("Лист3").Range("g2").Offset(r, 0).Value = result.Offset(0, -6).Value 'client End If Set result = .FindNext(result) 'ищем следующую Loop While Not result Is Nothing And result.Address <> firstAddress 'выход из цикла при переходе снова на первую End If End With