2015-10-20 1 views
0

У меня есть UserForm, который имеет один ComboBox и TextBox. TextBox должен делать vlookup для значения ComboBox, но ТОЛЬКО, если это значение существует в списке, если нет, я не хочу, чтобы в TextBox ничего не появлялось, чтобы пользователь мог ввести новую информацию.UserForm ComboBox

Это как далеко я получил:

Private Sub TextBox1_Enter() 
If cbocolor.Value <> "" Then 

Dim evalStr As String 
Dim check As Variant 
evalStr = WorksheetFunction.VLookup(cbocolor.Value,  worksheets("CONTACTS").Range("allcontacts"), 2, False) 
check = Evaluate(evalStr) 
If VarType(check) = vbError Then 
TextBox1.Value = "Enter new info" 

Else 
var1 = WorksheetFunction.VLookup(cbocolor.Value,  Worksheets("CONTACTS").Range("allcontacts"), 2, False) 
TextBox1.Value = var1 



End If 

ответ

1

Вы должны быть в состоянии сделать все это с одной строкой:

Private Sub TextBox1_Enter() 
    If cbocolor.value <> "" Then 

     TextBox1.value = WorksheetFunction.IfError(Application.VLookup(cbocolor.value, _ 
      Worksheets("CONTACTS").Range("allcontacts"), 2, False), "Enter New Info") 

    End If 
End Sub 
+0

Я наклоняюсь отблагодарить вас, я знал, что это было смешно, легко, и я знал, что слишком много думал об этом. Спасибо. – CORNAKI

+0

@CORNAKI ВАМ ОПРЕДЕЛЕННО КАКИХ. :) Добро пожаловать. Если вы склонны, вы отметите это как правильное. –

+0

Могу ли я задать вопрос, чтобы лучше понять. То, что я вижу из вашего ответа, - если есть ошибка, тогда сделайте «первую вещь», а если не сделаете «вторую вещь» - но ваш код делает наоборот. Он работает идеально, но я хотел бы понять. Спасибо – CORNAKI