#excel #vba #find
Вопрос:
Я знаю, что это, вероятно, имеет широкий охват, и я пробовал некоторые из них, но все еще не могу заставить их работать:
Dim d As Range
For Each d In orng
Dim val As Range
Set val = adws.Range("O2:O" amp; lrw).Find(d.Value, , xlValues, xlWhole).Offset(0, 26)
If val Is Nothing Then
MsgBox d.Value amp; " not found."
End
Else
d.Offset(0, 12) = val.Value
End If
Next
Код работает нормально до тех пор, пока функция находит значение, но выдает ошибку при первом обнаружении, что это не так. Установка переменной val и запуск функции поиска в той же строке, которую я получил с других форумов. Но это, похоже, совсем не работает. Поиск все еще путается, когда не может найти значение.
Заранее спасибо.
Комментарии:
1. Понял. Спасибо!
Ответ №1:
Это .Offset(0, 26)
проблематично. Не Find
связывайте звонки по цепочке с вызовом, а только Offset
после того, как вы убедитесь Find
, что вызов прошел успешно.
Также подумайте об использовании другого имени переменной, отличного Val
от того, которое скрывает Val
функцию.
Dim rng as Range
Set rng = adws.Range("O2:O" amp; lrw).Find(d.Value, , xlValues, xlWhole)
If rng Is Nothing Then
MsgBox d.Value amp; " not found."
End
Else
d.Offset(0, 12).Value = rng.Offset(0, 26).Value ' Offset here since Find succeeded
End If