零值不应该在那里

我正在绞尽脑汁想出最简单的事情。 用下面的代码,我得到零值。 当一个用户填写名为“cbocolor”的combobox中的东西,然后切换到下一个文本框,我的系统做了一个查找。 如果“cbocolor”中的条目存在于我的联系人页面上,但是第2列没有任何内容,我希望它只是返回没有(“”)作为我的答案….但它总是回到零。 请,和帮助,将不胜感激

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 

VLOOKUP函数试图返回一个空单元格,导致显示0 (即 )。 附加一个零长度的string(例如"" )来避免这种情况。

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

我不相信你可以用这种方式使用WorksheetFunction.IfError 。 如果遇到麻烦考虑,

 if IsError(application.Match(cbocolor.value, Worksheets("CONTACTS").Range("allcontacts").Columns(1), 0)) Then TextBox1.value = "Enter New Info" else TextBox1.value = Application.VLookup(cbocolor.value, Worksheets("CONTACTS").Range("allcontacts"), 2, False) & "" end if 

error handling在VBA中是不同的, IFERROR函数不会捕获从工作表抛出的错误与工作表公式不匹配的方式。