我正在绞尽脑汁想出最简单的事情。使用下面的代码,我得到零值。 当用户在名为“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
答案 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不会捕获工作表中抛出的错误,与工作表公式的方式不匹配。