零值不存在的地方

时间:2015-12-30 02:58:59

标签: excel vba vlookup

我正在绞尽脑汁想出最简单的事情。使用下面的代码,我得到零值。 当用户在名为“cbocolor”的组合框中填写某些内容然后切换到下一个文本框时,我的系统会执行vlookup。 如果“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

1 个答案:

答案 0 :(得分:2)

VLOOKUP function尝试返回一个空单元格,导致显示 0 (即)。附加零长度字符串(例如"")以避免这种情况。

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

错误处理在VBA中是不同的,IFERROR function不会捕获工作表中抛出的错误,与工作表公式的方式不匹配。