返回一个 Variant (Long) 值,指定一个字符串在另一个字符串中首次出现的位置。
语法
InStr ([start, ] string1, string2 [, compare ] )
InStr 函数语法具有以下参数:
| 参数 | 说明 |
|---|---|
| 开始 | 可选。 设置每个搜索的起始位置的数值表达式。 如果省略,搜索从第一个字符位置开始。 如果 start 包含 Null,将出现错误。 如果指定了比较,则需要启动参数。 |
| string1 | 必需。 正在搜索的字符串表达式。 |
| string2 | 必需。 搜寻的字符串表达式。 |
| 比较 | 可选。 指定字符串比较的类型。 如果 比较 为 Null,则会出现错误。 如果省略比较,OptionCompare 设置将确定比较的类型。 指定有效的 LCID (LocaleID) ,以便在比较中使用特定于区域设置的规则。 |
提示
表达式生成器具有 IntelliSense,因此可以查看表达式需要哪些参数。
“设置”
比较参数设置包括:
| 常量 | 值 | 说明 |
|---|---|---|
| vbUseCompareOption | 来执行此操作 | 使用 Option Compare 语句的设置执行比较。 |
| vbBinaryCompare | 0 | 执行二进制比较。 |
| vbTextCompare | 1 | 执行文本比较。 |
返回值
| If | InStr 返回 |
|---|---|
| string1 的长度为零 | 0 |
| string1 为 Null | Null |
| string2 的长度为零 | start |
| string2 为 Null | Null |
| 找不到 string2 | 0 |
| string2 在 string1 中找到 | 找到匹配的位置 |
| start > string2 | 0 |
备注
InStrB 函数用于字符串中包含的字节数据。 InStrB 返回字节位置,而不是返回一个字符串在另一个字符串中第一次出现的字符位置。
示例
在表达式中使用 InStr 函数 只要能使用表达式,就可以使用 InStr 。 例如,如果要查找第一个句点的位置 (。 在包含名为 IPAddress) 的 IP 地址 (的字段中) ,可以使用 InStr 查找它,如下所示:
InStr (1,[IPAddress],“.”)
InStr 函数检查 IPAddress 字段中的每个值,并返回第一个周期的位置。 因此,如果 IP 地址的第一部分是 10,则该函数返回值 3。
然后,可以使用其他函数对 InStr 函数的输出进行操作,以提取第一个句点之前的 IP 地址部分,如下所示:
Left ([IPAddress], (InStr (1,[IPAddress],“.”) -1) )
在本示例中, InStr (1,[IPAddress],“.”) 返回第一个周期的位置。 减去 1 确定第一个句点前面的字符数,在本例中为 2。 然后, Left 函数从 IPAddress 字段的左侧部分提取这些字符,返回值 10。
在 VBA 代码中使用 InStr
注意
下面的示例演示了在Visual Basic for Applications (VBA) 模块中使用此函数。
此示例使用 InStr 函数返回一个字符串首次出现的位置。
Dim SearchString, SearchChar, MyPos
SearchString ="XXpXXpXXPXXP" ' String to search in.
SearchChar = "P" ' Search for "P".
' A textual comparison starting at position 4. Returns 6.
MyPos = Instr(4, SearchString, SearchChar, 1)
' A binary comparison starting at position 1. Returns 9.
MyPos = Instr(1, SearchString, SearchChar, 0)
' Comparison is binary by default
' (last argument is omitted).
MyPos = Instr(SearchString, SearchChar) ' Returns 9.
MyPos = Instr(1, SearchString, "W") ' Returns 0.