2015-04-07 2 views
0

Хорошо, так вот код для моего UserForm:Excel VBA UserForm ВПР ошибка

Private Sub CancelButton_Click() 

Unload Me 

End Sub 

Private Sub ClearButton_Click() 

Call InventoryEntryBox_Initialize 

End Sub 

Private Sub SubmitButton_Click() 
Dim emptyRow As Long 

'Make Inventory Test sheet active 
Worksheets("InventoryTest").Activate 

'Transfer Information 
Worksheets("InventoryTest").Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Value = PartNumberComboBox.List 
Worksheets("InventoryTest").Cells(Rows.Count, "C").End(xlUp).Offset(1, 0).Value = LocationTextBox.Value 
Worksheets("InventoryTest").Cells(Rows.Count, "D").End(xlUp).Offset(1, 0).Value = QuantityTextBox.Value 
Worksheets("InventoryTest").Cells(Rows.Count, "F").End(xlUp).Offset(1, 0).Value = CommentsTextBox.Value 

Call InventoryEntryBox_Initialize 

End Sub 

Private Sub InventoryEntryBox_Initialize() 

'Fill PartNumberComboBox 
PartNumberComboBox.List = ActiveWorkbook.Sheets("Test2").Range("B2:B43").Value 

'Empty Location Text Box 
LocationTextBox.Value = "" 

'Empty Quantity Text Box 
QuantityTextBox.Value = "" 

'Empty Comments Text Box 
CommentsTextBox.Value = "" 

'Unit Of Measure auto-fill box 


'Description auto-fill box 
DescriptionFormula.Value = Application.WorksheetFunction.VLookup(PartNumberComboBox.List, ActiveWorkbook.Sheets("Test2").Range("B2:D43"), 3, False) 

'Set focus on Empty Part Number text box 
PartNumberTextBox.SetFocus 

End Sub 

Теперь, идея с этим кодом состоит в том, чтобы иметь пользовательскую форму, поэтому ne может заполнить его (PartNumberComboBox, LocationTextBox, QuantityTextBox и CommentsTextBox), чтобы каталогизировать инвентарь о том, какие предметы находятся в каких местах и ​​в каком количестве. Когда кто-то заполняет номер позиции в PartNumberComboBox, DescriptionFormula будет автоматически заполняться данными из списка (отмечен как PartDescription, который включает D2: D43 в лист Test2).

Моя проблема, однако, сводится к двум вариантам: поле «ОписаниеFormula.Value» не заполняется автоматически, когда кто-то вводит номер детали в PartNumberComboBox, и когда я пытаюсь нажать кнопку «отправить», чтобы подтвердить данные, введенные в форму и помещенные в области, указанные в коде, я получаю диалоговое окно, которое появляется и говорит «Ошибка времени выполнения 70:« Разрешено разрешение », затем« PartNumberComboBox.List = ActiveWorkbook.Sheets (" Test2 "). Диапазон (« B2: B43 »). Значение« подсвечивается, когда я иду на отладку.

Я не уверен, что это проблема с моим кодом, или если это ограничение Excel или Vlookup на основе того, что я делаю ... или если это что-то еще. Любая помощь, которую любой мог предложить, будет благословением на этом этапе.

+0

Свойство combobox "PartNumberComboBox" ** Стиль = 2 - fmStyleDropdownList ** – Arya

+0

Изменение, которое позволяет пользователю видеть, что они печатают в поле со списком, и по-прежнему дает мне ошибку «отказ в доступе». – Allenisto

+0

в столбце B вы хотите только одно значение из поля со списком справа ??? используйте PartNumberComboBox.List (PartNumberComboBox.listindex) или PartNumberComboBox.text – Arya

ответ

0

Я на самом деле решить мой собственный вопрос:

Так получается, что мне нужно, чтобы написать новый подраздел для данного уравнения, а не вставлять его в моем Initialize к югу. Вот что я написал, чтобы заставить его работать:

Private Sub PartNumberComboBox_Change() 
Me.UnitOfMeasureFormula.Value = Application.WorksheetFunction.VLookup(Me.PartNumberComboBox.Value, Sheets("sheet2").Range("a2:c43"), 3, False) 
Me.DescriptionFormula.Value = Application.WorksheetFunction.VLookup(Me.PartNumberComboBox.Value, Sheets("sheet2").Range("a2:c43"), 2, False) 
End Sub 

при смене моего «Описание автоматического заполнения окна» для этого:

'Empty Description label 
DescriptionFormula.Value = "" 

Что это делает опустошить коробку, что автоматическое заполнение будет использоваться при запуске Userform, а затем с помощью юнита _Change с ComboBox, который ссылается на формулу, поэтому он изменяет описание на основе того, что ComboBox говорит с простой формулой VLookup. Теперь он работает плавно, и я снова в пути!