arrays - 在数组中查找字符串时出现类型不匹配
问题描述
我有一些代码可以从电子表格中提取字符串并在数组中查找字符串的索引值。我注意到如果我将字符串保持为 1 个字符,则代码可以正常工作。如果我真的尝试运行它来查找单词,我会收到类型不匹配错误,即使字符串 DEFINITELY 存在于数组中。任何帮助,将不胜感激。我在下面粘贴了一个简化版本的代码,它仍然会导致同样的错误。
我尝试将我的数组调暗为变体或字符串。我尝试使用空格使数组中的所有字符串都具有相同的长度。
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
我希望 MSG 框会出现 1、2、3、4 和 5。在“1”之后出现错误 13。
解决方案
您缺少最后一个参数,即匹配类型。请参阅此处的文档。
它说:
如果 match_type 为 1,则 Match 查找小于或等于 lookup_value 的最大值。Lookup_array 必须按升序排列:...-2、-1、0、1、2、...、AZ、FALSE、TRUE。
如果 match_type 为 0,Match 会找到第一个与 lookup_value 完全相等的值。Lookup_array 可以是任何顺序。请注意,Match 不区分大小写。
如果 match_type 为 -1,则 Match 查找大于或等于 lookup_value 的最小值。Lookup_array 必须按降序排列:TRUE、FALSE、ZA、...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
推荐阅读
- python - bash:/home/khawar/.local/bin/pip3:/home/khawar/anaconda3/envs/AAAIFace/bin/python:错误的解释器:没有这样的文件或目录
- r - 根据样本(行)中的存在选择列 R
- reactjs - react js中在tbody中显示对象对象的最佳方法
- javascript - Legacy Edge(版本 44)中清除输入的事件
- jquery - 用 Api 连接图
- intellij-idea - 为什么我没有在 JetBrains Educational Pack 确认中阅读到底部的“我接受”按钮?
- html - 使用 HTML5 或 JS 监听 UDP 广播
- java - Java 使用 Jackson 解析 JSON
- node.js - 我不知道为什么猫鼬填充器返回null?
- amazon-web-services - 解析参数“--targets”时出错:预期:“=”,接收到:“{”用于输入: