String 如果以开始,则使用instr扫描字符串

String 如果以开始,则使用instr扫描字符串,string,vba,parsing,String,Vba,Parsing,我将一个参数传递给一个函数,其中该参数将以“Error one”或“Error Two”开头 例如: Error One: A Error One: B Error Two: A Error Two: B 因此,在函数内部,我需要一个条件来检查传入的字符串以什么开头,它将指示操作 我试图使用INSTR函数 IF (INSTR(p_msg, 'Error One') = 'Error One') .... 但不起作用。 我没有将起始位置设置为默认值1。 如何使用INSTR函数检查字符串的开头?

我将一个参数传递给一个函数,其中该参数将以“Error one”或“Error Two”开头

例如:

Error One: A
Error One: B
Error Two: A
Error Two: B
因此,在函数内部,我需要一个条件来检查传入的字符串以什么开头,它将指示操作

我试图使用INSTR函数

IF (INSTR(p_msg, 'Error One') = 'Error One') ....
但不起作用。
我没有将起始位置设置为默认值1。
如何使用INSTR函数检查字符串的开头?

返回字符串中搜索字符串的位置,如果未找到,则返回零;它不会返回字符串本身。我还发现,在函数周围包装一个
CBool
,显式地将其设置为True/False是有益的

if CBool(INSTR(p_msg, "Error One")) Then
请注意,这并不总是以
场景开始;仅一个子字符串在另一个子字符串中。如果必须以搜索字符串开始,那么
Like
操作符可能更合适

if p_msg LIKE "Error One*" Then
请注意星号通配符。我不知道为什么要使用单引号(例如,勾号),但VBA中只使用双引号来区分文本

您可能还希望查看一个而不是多个嵌套的
If
语句。

返回字符串中搜索字符串的位置,如果未找到,则返回零;它不会返回字符串本身。我还发现,在函数周围包装一个
CBool
,显式地将其设置为True/False是有益的

if CBool(INSTR(p_msg, "Error One")) Then
请注意,这并不总是以
场景开始;仅一个子字符串在另一个子字符串中。如果必须以搜索字符串开始,那么
Like
操作符可能更合适

if p_msg LIKE "Error One*" Then
请注意星号通配符。我不知道为什么要使用单引号(例如,勾号),但VBA中只使用双引号来区分文本


您可能还希望查看一个而不是多个嵌套的
If
语句。

哦,好的,因此我可以使用InStr函数检查字符串是否在任何位置返回。。。例如:IF(INSTR(p_msg,'Error One')0)…它不会返回字符串。如果找到,则返回找到的非零位置;如果没有找到它,它将返回零。在开始字符串的情况下,它将返回1。是的,您可以检查返回值是否为非零。感谢您的澄清哦,好的,所以我可以使用InStr函数检查字符串是否在任何位置返回。。。例如:IF(INSTR(p_msg,'Error One')0)…它不会返回字符串。如果找到,则返回找到的非零位置;如果没有找到它,它将返回零。在开始字符串的情况下,它将返回1。是的,您可以检查返回值是否为非零。感谢您的澄清