Оператор IF - ошибка 1004 [файл Vlookup возвращает ноль] - PullRequest
0 голосов
/ 15 мая 2018

Я создаю базу данных продуктов с данными из столбца Excel (2nos).1 столбец содержит описание продукта и другую цену.

Поле со списком заполняется данными о товарах (поиск по мере ввода), а при нажатии кнопки в текстовом поле отображается цена.

Итак, проблема сейчас в том, что иногда могут быть продукты, которых нет в базе данных, и при нажатии кнопки программа завершается.пытался обойти, используя функцию IF.не получилось, как ожидалось.

Я новичок в этом.Пожалуйста, помогите.

Dim ProductNa As Range
Dim ProducPr As Object
Private Sub LowPriceBtn_Click()
    Set ProductNa = Worksheets("Pdata").Range("A2:B7400")
    ProducPr = Application.WorksheetFunction.VLookup(Me.ProBox1.Value, ProductNa, 2, False)
    If ProducPr <> 0 Then
    proRate1.Text = ProducPr
    Else
    proRate1.Text = "Nothing available in database"
    End If
    End Sub

Приведенный выше код не работает.

Это тот, который работал раньше:

Private Sub LowPriceBtn_Click()
Set ProductNa = Worksheets("Pdata").Range("A2:B7400")
proRate1.Text = Application.WorksheetFunction.VLookup(Me.ProBox1.Value, ProductNa, 2, False)

Это работает.Но когда Vlookup не возвращает значения, происходит сбой программы.

PS: proRate1 - имя текстового поля, probox1 - выпадающий список.

1 Ответ

0 голосов
/ 27 августа 2018

У меня есть функция, которая может вдохновить вас на разработку вашего кода.

 1. Create a new module 
 2. Paste code bellow
Function MyVLOOKUP(p_value_search As Range, p_matrix As Range, p_col_return As Integer)
'= MyVLOOKUP(E4;Banks!$B$2:$Q$10563;9)
v_value_search = p_value_search.Value
For x = 1 To p_matrix.Rows.Count
  If v_value_search = p_matrix.Cells(x, 1).Value Then
     v_resp = p_matrix.Cells(x, p_col_return).Value
     Exit For
  End If
Next
MyVLOOKUP = v_resp
End Function
 3. Go back to the worksheet and insert into a cell the code equal to 
 the VLOOKUP function.  example: = MyVLOOKUP(E4;Banks!$B$2:$Q$10563;9)

Эта функция не возвращает ZERO или # N /D, когда не нашел значения.Надеюсь вам помочь.

...