2016-07-13 53 views
0
englishReasonsToGoToSecondFloor = "test" & ";" & "exam & pay" & ";" & " possible fake" 

所以我的值可能包含一个&或(空间),或只是一个字。每个项目由“;”分开我InStr函数总是返回0

所以最终的名单将看起来像“测试,考试&工资;可能的假”(真正的名单是更长的时间)

当用户从列表框中选择一个项目,我要赶紧比较选择在变量的话(如果有更好的方法来比较,请让我知道)

rowValue = Trim(listboxTest.Column(1)) 
englishResult = InStr(1, rowValue, englishReasonsToGoToSecondFloor, CompareMethod.Text) 

我可以将鼠标放在rowValue,我看到有一个值。

rowValue contains "possible fake" 

但englishResult始终为0

+0

我不知道你能做到这样,你正在寻找完整的字符串时,与连接它们像“测试; examp & pay;可能假的”,这是你要找什么,我认为你需要运行多个instr。 –

+2

提前半小时发布的http://stackoverflow.com/questions/38353529/my-instr-keeps-telling-me-its-mismatched的副本。要说确切的重复,但最后三行是不同的。 –

回答

1

应该像下面

englishResult = InStr(1, englishReasonsToGoToSecondFloor, rowValue, CompareMethod.Text) 

EDIT

的语法INSTR功能是

InStr([Start], String1, String2, [Compare]) 

其中,

[开始] - 一个可选的整数参数,表示您想要从中开始搜索的位置。如果省略,则[开始]参数的默认值为1.

String1 - 要搜索的字符串。

String2 - 要搜索的子字符串。

[比较] - 一个可选参数,指定要进行比较的类型。 这可以是任何下列值:

vbBinaryCompare - 执行二进制比较

vbTextCompare - 执行文本比较

vbDatabaseCompare - 执行数据库比较

如果省略, [Compare]参数采用默认值vbBinaryCompare。

+0

为了未来的读者,你能解释为什么这能解决问题吗? – litelite

+0

说明:http://stackoverflow.com/a/38354102/3961708 :) – cyboashu

-1

englishResult = InStr(1, rowValue,"test", CompareMethod.Text) if englishResult=0 then englishResult = InStr(1,rowValue, "exam & pay", CompareMethod.Text) if englishResult=0 then englishResult = InStr(1, rowValue, " possible fake", rowValue,CompareMethod.Text)

2

不知道访问..但INSTR方法在Excel中VBA工作与主字符串搜索字符串所以

InStr(1,englishReasonsToGoToSecondFloor, rowValue , CompareMethod.Text)前这应该工作。