【发布时间】:2018-03-14 16:58:58
【问题描述】:
在索引/匹配上出现上述错误。会尽量保持这个简短而甜蜜,但我是一个 VBA 菜鸟。被调用的所有内容都包含数据。我注意到的一件事是,当我执行调试打印时,RefCol(一系列数字)具有前导和尾随空格。但是,当我测试值的长度时,它返回了正确的值。
我不明白是什么破坏了它,我在工作簿本身中进行了索引匹配,它运行良好。
Private Sub Ref_Change()
Dim ws As Worksheet
Dim tbl As ListObject
Set ws = Worksheets("Details")
Set tbl = ws.ListObjects("Call_Log")
Dim RefCol As Range
Dim NameCol As Range
Dim PhoneCol As Range
Dim DateCol As Range
Set RefCol = tbl.ListColumns("Ref Number").DataBodyRange
Set NameCol = tbl.ListColumns("Caller Name").DataBodyRange
Set PhoneCol = tbl.ListColumns("Telephone").DataBodyRange
Set DateCol = tbl.ListColumns("Date").DataBodyRange
Me.CallDate.Value = Application.WorksheetFunction.Index(DateCol, Application.Match(Me.Ref.Value, RefCol, 0))
End Sub
我的设置是否正确?
谢谢
埃文
【问题讨论】:
-
什么是CallDate,公式返回什么值?
-
RefCol 必须是单列。与 DateCol 相同,或者您可以将列索引编号添加到 Index。
-
很可能后期绑定的
Match调用返回一些#VALUE!错误值,并且由于该类型不能被强制为任何它使早期绑定Index调用 raise 类型不匹配错误。将Application.Match替换为Application.WorksheetFunction.Match以使其在不匹配的情况下引发 错误,和/或将其拉出并单独计算,并且仅在您 时调用Index知道Match成功了。 -
CallDate 是用户窗体中的一个文本框,这是问题所在吗?我希望它工作的方式是您选择参考,然后在表格的框中显示呼叫数据(日期、呼叫者、电话号码) - 这不切实际/不可能吗?谢谢
-
@Jeeped - 它们是我表中的单列,我不知道如何检查这是否是问题