Страницы: 1
RSS
WorksheetFunction.VLookup - 1004
 
Доброй ночи.  
Люди добрые, подскажите, почему ошибку 1004 ловлю?  
Использую вот такое выражение, вроде всё по правилам:  
Cells(i, f).Value = WorksheetFunction.VLookup(Cells(i, 2).Value, Range(Columns(14), Columns(19)), f + 5, False)
 
а где приложенный файл с примером?  
 
P.S. 1004 - своеобразная ошибка и скорее всего она не относится к коду никак (т.е. код правильный и причина в чём-то другом)
 
У вас, скорее всего, ячейка пустая тут Cells(i, 2).Value
 
Я попробовал ваш код (со своими переменными), всё нормально работает. Но если ячейка по адресу Cells(i, 2).Value пустая, то выскакивает ошибка 1004
 
приложил файл, всё равно не работает независимо от того, пустая ли ячейка, или нет  
 
Sub asdf()  
i = 1  
f = 3  
 
Do While i <> 6  
Do While f <> 6  
s = Cells(i, 2).Value  
Cells(i, f).Value = Application.WorksheetFunction.VLookup(s, Range(Columns(7), Columns(11)), f + 5, True)  
f = f + 1  
Loop  
i = i + 1  
Loop  
 
 
End Sub
 
"невозможно получить свойство vlookup класса worksheetfunction" - такая ошибка
 
Заработал код ниже: ошибки нашёл, вроде понял.    
 
Если только небольшой ликбез кто-то сможет устроить. Чем отличается Application.VLookup от Application.WorksheetFunction.VLookup. Что за принцип?  
 
Sub asdf()  
i = 1  
f = 3  
 
Do While i <> 7  
Do While f <> 7  
s = Cells(i, 2).Value  
f1 = f + 5  
sDescript = Application.VLookup(s, Range(Columns(7), Columns(11)), f - 1, False)  
Cells(i, f).Value = IIf(IsError(sDescript), "", sDescript)  
 
f = f + 1  
 
Loop  
i = i + 1  
f = 3  
Loop  
 
End Sub
 
Если честно, то я не понимаю, что вы хотите. Может вы сами запутались в своих переменных и циклах?  
 
Смотрите приложенный файл. Там рабочий код. Никаких ошибок не выскакивает.  
На лицо ваше непонимание кода, циклов, переменных и т.д.  
 
Sub asdf()  
Dim i As Long, f As Long, s As String, n As Long  
     
   For i = 1 To 6  
       n = 1  
       For f = 3 To 6  
           Cells(i, f) = Application.VLookup(Cells(i, 2).Value, Range("G:K"), n + 1, False)  
           n = n + 1  
       Next f  
   Next i  
   MsgBox "Конец!", vbInformation, "Конец"  
End Sub
 
и в ВПР для поиска точного соответствия лучше использовать в 4-м аргументе "ЛОЖЬ", а не "ИСТИНА"
 
ошибка была в том, что если использовать Application.WorksheetFunction.VLookup, то возникающая ошибка, видимо не пишется в переменную/ячейку, а препятствует исполнению кода.  
 
Если использовать Application.VLookup, если получаем н/д, можем её отследить и поправить.  
 
+ Отступ назначался абсолютным, а не относительным первой колонке диапазона, поэтому Н/Д вылезала всегда - глупая ошибка  
 
И, да, да, цикл был неправильный, пример делал второпях, простите.  
 
Так что такое WorksheetFunction, и почему такое воздействие оказывает на функцию?
Страницы: 1
Читают тему
Loading...