2016-02-12 37 views
1

开头我将一个参数传递给函数,其中参数将以'Error One'或'Error Two'开头。使用instr扫描字符串,如果以

例子:

Error One: A 
Error One: B 
Error Two: A 
Error Two: B 

所以里面的功能,我需要一个条件检查什么字符串传递开始与这将决定行动。

我试图使用INSTR函数

IF (INSTR(p_msg, 'Error One') = 'Error One') .... 

但不工作。
我不会把start_position设置为默认值1.
如何使用INSTR函数检查字符串的开头?

回答

0

InStr function返回字符串或零内的搜索字符串的位置如果未找到;它不返回字符串本身。我还发现围绕函数包装CBool以明确地将其设置为True/False是有益的。

if CBool(INSTR(p_msg, "Error One")) Then 

注意,这并不总是一个开始与方案;只是一个子字符串是,另一个是。如果必须开始搜索字符串,则Like运算符可能更合适。

if p_msg LIKE "Error One*" Then 

注意星号通配符。我不知道你为什么使用单引号(例如刻度),但在VBA中只使用双引号来区分文本。

您可能还想查看Select Case statement而不是嵌套的If语句。

+0

哦确定,所以我可以使用InStr函数来检查,如果该字符串不是在任何位置返回... 因此,像: IF(INSTR(p_msg,“错误一”)<> 0)。 ... –

+0

它不返回字符串。如果找到,它将返回找到它的非零位置;如果没有找到,它将返回零。在它启动字符串的情况下,它将返回** 1 **。是的,你可以检查返回值是否为非零。 – Jeeped

+0

感谢您的澄清 –