在数组中查找字符串时获取类型不匹配

时间:2019-06-03 22:49:22

标签: arrays excel vba types mismatch

我有一些代码可以从电子表格中提取字符串,并在数组中查找字符串的索引值。我注意到如果我将字符串保持为1个字符,则代码可以正常工作。如果我实际上尝试运行它以查找单词,即使字符串内部明确存在字符串,也会出现类型不匹配错误。任何帮助,将不胜感激。我粘贴了下面的代码的简化版本,仍然会导致相同的错误。

我尝试将数组变暗为变量或字符串。我尝试使用空格使数组中的所有字符串都具有相同的长度。

Sub myArray_ISbroke()

    Dim arraysSuck: arraysSuck = Split("HI,HELLO,TEST1,TEST2,T3", ",")
    MsgBox Application.Match("HI", arraysSuck)
    MsgBox Application.Match("HELLO", arraysSuck)
    MsgBox Application.Match("TEST1", arraysSuck)
    MsgBox Application.Match("TEST2", arraysSuck)
    MsgBox Application.Match("T3", arraysSuck)

End Sub

我希望味精盒能提供1、2、3、4和5。我在'1'之后得到错误13。

1 个答案:

答案 0 :(得分:0)

您缺少最后一个参数,即匹配类型。请参阅文档here

它说:

  

如果match_type为1,则Match查找小于或等于lookup_value的最大值。 Lookup_array必须按升序排列:...- 2,-1、0、1、2,...,A-Z,FALSE,TRUE。

     

如果match_type为0,则Match找到与lookup_value完全相等的第一个值。 Lookup_array可以采用任何顺序。请注意,匹配不区分大小写。

     

如果match_type为-1,则Match查找大于或等于lookup_value的最小值。 Lookup_array必须按降序排列:TRUE,FALSE,Z-A,... 2、1、0,-1,-2,...,依此类推。

     

如果省略match_type,则假定为1。

修改后的代码:

Option Explicit

Sub UpdatedExample()

    Dim arraysSuck: arraysSuck = Split("HI,HELLO,TEST1,TEST2,T3", ",")
    MsgBox Application.Match("HI", arraysSuck, 0)
    MsgBox Application.Match("HELLO", arraysSuck, 0)
    MsgBox Application.Match("TEST1", arraysSuck, 0)
    MsgBox Application.Match("TEST2", arraysSuck, 0)
    MsgBox Application.Match("T3", arraysSuck, 0)

End Sub