會傳回 Variant (Long),指定另一個字串內某個字串的第一個出現位置。
語法
InStr ([start, ] string1, string2 [, compare ] )
InStr 函數語法具有下列引數:
| 引數 | 描述 |
|---|---|
| 開始 | 可省略。 設定每個搜尋起始位置的數值運算式。 如果省略,則會從第一個字元位置開始搜尋。 如果 start 包含 Null,則會發生錯誤。 如果指定比較,則需要 start 引數。 |
| 字串1 | 必要。 正在搜尋字串運算式。 |
| 字串2 | 必要。 字串運算式已找到。 |
| compare | 可省略。 指定字串比較的類型。 如果 比較 為 Null,則會發生錯誤。 如果省略比較,則 OptionCompare 設定將決定比較類型。 指定有效的 LCID (LocaleID) ,以便在比較中使用地區設定特定的規則。 |
秘訣
運算式產生器具有 IntelliSense,因此您可以查看運算式需要哪些引數。
設定
比較引數設定如下:
| 常數 | 值 | 描述 |
|---|---|---|
| vbUseCompareOption | -1 | 使用 Option Compare 陳述式的設定執行比較。 |
| vbBinaryCompare | 0 | 執行二進位比較。 |
| vbTextCompare | 1 | 執行文字比較。 |
傳回值
| If | InStr 傳回 |
|---|---|
| 字串1 的長度為零 | 0 |
| 字串1 為 Null | Null |
| 字串2 的長度為零 | 開始 |
| 字串2 為 Null | Null |
| 找不到字串2 | 0 |
| string2 位於 string1 內 | 找到相符符的位置 |
| start > 字串2 | 0 |
註解
InStrB 函數是搭配字串中包含的位元組資料使用。 InStrB 不會傳回一個字串在另一個字串中第一次出現的字元位置,而是傳回位元組位置。
範例
在運算式中使用 InStr 函數 您可以在任何可以使用運算式的位置使用 InStr 。 例如,如果您想要尋找第一個句點 (的位置) 在 包含 IP 位址的欄位中, (名為 IPAddress) ,您可以使用 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.