【问题标题】:Error 13 - Type mismatch - Index Match错误 13 - 类型不匹配 - 索引匹配
【发布时间】: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 - 它们是我表中的单列,我不知道如何检查这是否是问题

标签: vba excel


【解决方案1】:

如前所述,很可能没有找到匹配项,并且正在将错误传递给 INDEX。

在找到数据中正确的单元格之前,拉出 MATCH 并测试错误。

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

Dim mtchRow As Long
mtchRow = 0
On Error Resume Next
    mtchRow = Application.WorksheetFunction.Match(Me.ref.Value, RefCol, 0)
On Error GoTo 0
If mtchRow > 0 Then
    Me.CallDate.Value = DateCol.Cells(mtchRow, 1).Value
Else
    MsgBox "'" & Me.ref.Value & "' not found, or lookup array is more than one column or row"
End If



End Sub

【讨论】:

  • 嗨,谢谢你,我已经尝试过了,它返回 - '7' 未找到,或者查找数组不止一列或一行。我知道 Ref 编号在那里,因为我做了一个 for 循环并调试打印它们。我将如何进一步解决这个问题?谢谢
  • 仔细检查您的数据是否没有空格或其他不可打印的字符,这些字符会排除 Excel 查找匹配项。现在的错误在于数据。如果您正在查找数字,请确保数据不是看起来像数字的文本字符串。它还在寻找完全匹配而不是部分匹配
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-31
  • 1970-01-01
相关资源
最近更新 更多