Я настраиваю функцию пользовательской формы VBA для своей работы, которая показывает доступные количества, оставленные для заказа на основе номера детали, а затем номера партии.
Когда я использую функцию Выбрать в сочетании с Vlookup в обычных ячейках Excel,функция работает отлично.Когда я пытаюсь преобразовать его в VBA и включить Combobox / текстовые поля для поиска, он выдает ошибку или ничего не возвращает в указанные текстовые поля.
Таблица индекса имеет два столбца, один с номером детали, а другой с номером индекса.
Другие таблицы имеют псевдонимы (короткие имена для лотов), партии и количества.Они разделены номерами деталей.
Обычно я просто получаю сообщение об ошибке «1004»: «Невозможно получить свойство VLookup класса WorksheetFunction».
Я понимаю, что это очень типичная ошибка, когда vlookup не может найти искомое значение, но я специально тестировал значения, которые, как мне известно, находятся в таблицах, которые я настроил.После того, как он действительно заработал, я знаю, как вставить функцию для проверки, действительно ли значение там, и выложить сообщение об ошибке и т. Д.
Обычно это приводит к ошибкам при первом поиске vlookup.
Private Sub txtPPAlias_Change()
Dim lot As String
Dim qty As String
Dim itemnumber As String
Dim PPIndex As Range
Set PPIndex = Worksheets("Lookup").Range("R2:S5")
'This looks up the values for the lot number and available quantity. Close to working but not quite.
'Makes sure that the ComboBox has a value, and the length of the Alias is 2 or more
If cboItemNumber.Value <> "" And Len(txtPPAlias) >= 2 Then
'Pulls Index number off lookup table
IndexNumber = WorksheetFunction.VLookup(cboItemNumber.Value, PPIndex, 2, False)
'Looks for lot number from one of four tables based on Index Number pulled from previous argument
lot = Choose(IndexNumber, WorksheetFunction.VLookup(txtPPAlias.Value, PET75DTable, 2, False), WorksheetFunction.VLookup(txtPPAlias.Value, PET95ATable, 2, False), WorksheetFunction.VLookup(txtPPAlias.Value, PET70DTable, 2, False), WorksheetFunction.VLookup(txtPPAlias.Value, PET60DTable, 2, False))
'Looks for quantity based on same argument as previous lookup
qty = Choose(IndexNumber, WorksheetFunction.VLookup(txtPPAlias.Value, PET75DTable, 3, False), WorksheetFunction.VLookup(txtPPAlias.Value, PET95ATable, 3, False), WorksheetFunction.VLookup(txtPPAlias.Value, PET70DTable, 3, False), WorksheetFunction.VLookup(txtPPAlias.Value, PET60DTable, 3, False))
'Sets Userform lot textbox to lot value
txtLotNumber.Value = lot
'Sets Userform qty textbox to qty value
txtAvailableQuantity.Value = qty
End If
End Sub
Предполагается, что txtLotNumber.Value должен показывать полный номер лота, а txtAvailableQuantity.Value должен возвращать значение количества из таблицы.
Я не получил его вТочка, где он обеспечивает вывод еще.