我的InStr总是返回0

时间:2016-07-13 13:58:50

标签: vba ms-access

 englishReasonsToGoToSecondFloor = "test" & ";" & "exam & pay" & ";" & " possible fake"

所以我的值可能包含& 或(空格)或只包含一个单词。每个项目用“;”

分隔

所以最终列表看起来像“测试;考试和支付;可能的假”(真实列表要长得多)

当用户从列表框中选择一个项目时,我想快速将选择与变量中的单词进行比较(如果有更好的比较方法,请告诉我)

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

我可以将鼠标移到rowValue上,我看到有一个值。

rowValue contains "possible fake"

但是englishResult总是0

3 个答案:

答案 0 :(得分:2)

不确定Access ..但是Instr方法在Excel VBA中使用搜索字符串之前的主字符串,所以

InStr(1,englishReasonsToGoToSecondFloor, rowValue , CompareMethod.Text)这应该有用。

答案 1 :(得分:1)

应该如下所示

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

修改

Instr函数的语法是

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

其中,

     

[Start] - 一个可选的整数参数,表示您要开始搜索的位置。如果省略,[Start]参数将采用默认值1。

     

String1 - 要搜索的字符串。

     

String2 - 您要搜索的子字符串。

     

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

     

vbBinaryCompare - 执行二进制比较

     

vbTextCompare - 执行文本比较

     

vbDatabaseCompare - 执行数据库比较

     
    

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

  

答案 2 :(得分:-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)