VB6/VBA - InStr/InStrRev 内存溢出,求专业人士解答!

需求很简单,我想通过不区分大小写的方式查找字符串位置,为啥下面的语句报“内存溢出”的错误:
MsgBox InStr(1, "12K新 ペンダント縦约", "12k", vbTextCompare)

希望给出一个专业的解答,别简单的告诉我不支持某些字符,也别告诉我使用 vbBinaryCompare,请详细说明原因(解答满意者将提供高额悬赏)!
另外,同样的语句放在在 VB.NET IDE 环境中测试是对的(返回 1):
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
MessageBox.Show(InStr(1, "12K新 ペンダント縦约", "12k", vbTextCompare).ToString())
End Sub

我用VB6运行不报错
但在Excel的VBA中运行则报错
值得说明的是,我的VB6是打了SP5补丁的

尽管你可能不愿意听,但这确实是VB语言的一个Bug,只要字符串中含有如下日文字符(并不是全部日文字符),在进行文本比较时就会出错(二进制比较则不会出错):
ゴガギグゲザジズヅデドポベプビパヴボペブピバヂダゾゼ
这个Bug已经被微软通过补丁更正。

可以用变通的方法实现不区分大小写的字符串查询:
MsgBox InStr(1, LCase("12K新 ペンダント縦约"), LCase("12k"))
也就是说把原始字符串和要查找的字符串都转为小写(或者都转为大写)再来查找即可。
温馨提示:内容为网友见解,仅供参考
无其他回答

VB6\/VBA - InStr\/InStrRev 内存溢出,求专业人士解答!
MsgBox InStr(1, LCase("12K新 ペンダント縦约"), LCase("12k"))也就是说把原始字符串和要查找的字符串都转为小写(或者都转为大写)再来查找即可。

vba 查找字符串
1、首先需要打开需要编辑的Excel表格,进入到编辑的的页面中。2、然后在弹出来的窗口中,鼠标右键单击工作表,选择打开“查看代码”。3、然后在弹出来的窗口中,点击输入代码:Sub AAA()Dim I As Long For I = 1 To 1000 '行 范围,自己修改 If InStr(Range("A" & I), "invalidstatus") > ...

相似回答