我有一些代码可以从电子表格中提取字符串,并在数组中查找字符串的索引值。我注意到如果我将字符串保持为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。
答案 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