Vrátí hodnotu typu Variant (Long) určující pozici prvního výskytu jednoho řetězce v jiném řetězci.
Syntaxe
InStr([start; ] řetězec_1, řetězec_2 [, porovnání ] )
Syntaxe funkce InStr obsahuje tyto argumenty:
| Argument | Popis |
|---|---|
| začátek | Nepovinný argument. Číselný výraz, který nastaví počáteční pozici pro každé hledání. Pokud tento argument vynecháte, začne hledání na první pozici znaku. Pokud argument start obsahuje hodnotu Null, dojde k chybě. Argument start je povinný, pokud je zadaný parametr porovnání. |
| řetězec_1 | Povinný argument. Hledaný řetězcový výraz. |
| řetězec_2 | Povinný argument. Hledaný řetězcový výraz. |
| porovnat | Nepovinný argument. Určuje typ porovnání řetězců. Pokud má porovnání hodnotu Null, dojde k chybě. Pokud argument porovnání vynecháte, určí typ porovnání nastavení OptionCompare . Chcete-li při porovnávání použít pravidla specifická pro národní prostředí, zadejte platný identifikátor LCID (LocaleID). |
Tip:
Tvůrce výrazů využívá technologii IntelliSense, takže vidíte, jaké argumenty výraz vyžaduje.
Nastavení
Nastavení porovnávacího argumentu jsou:
| Konstanta | Hodnota | Popis |
|---|---|---|
| vbUseCompareOption | -1 | Provede porovnání pomocí nastavení příkazu Option Compare . |
| vbBinaryCompare | 0 | Provede binární porovnání. |
| vbTextCompare | 1 | Provede porovnání textu. |
Vrácené hodnoty
| Pokud | Funkce InStr vrátí |
|---|---|
| řetězec_1 je nulové délky | 0 |
| řetězec_1 je Null | Null |
| řetězec_2 je nulové délky | spustit |
| řetězec_2 je Null | Null |
| řetězec_2 nebyl nalezen | 0 |
| řetězec_2 se nachází uvnitř řetězce_1 | Pozice, na které je nalezena shoda |
| počáteční > řetězec_2 | 0 |
Poznámky
Funkce InStrB se používá s údaji o bajtech obsaženými v řetězci. Místo vrácení pozice znaku prvního výskytu jednoho řetězce v jiném řetězci vrátí funkce InStrB pozici bajtu.
Příklady
Použití funkce InStr ve výrazuInStr můžete použít všude, kde můžete použít výrazy. Pokud například chcete najít pozici první tečky (.) v poli, které obsahuje IP adresy (pojmenované IPAddress), můžete ji najít pomocí funkce InStr , takto:
InStr(1,[IPAddress],".")
Funkce InStr zkontroluje jednotlivé hodnoty v poli IPAddress a vrátí pozici prvního období. Pokud je tedy první část IP adresy 10., funkce vrátí hodnotu 3.
Pak můžete použít další funkce, které pracují s výstupem funkce InStr , k extrahování části IP adresy, která předchází prvnímu období, například:
Left([IPAddress],(InStr(1,[IPAddress],".")-1))
V tomto příkladu InStr(1,[IPAddress],".") Vrátí pozici prvního období. Odečtením 1 se určí, kolik znaků předchází první tečce, v tomto případě 2. Funkce Left pak extrahuje tento počet znaků z levé části pole Adresa_IP a vrátí hodnotu 10.
Použití funkce InStr v kódu jazyka VBA
Poznámka
Následující příklady ukazují použití této funkce v modulu VBA (Visual Basic pro Applications).
V tomto příkladu se funkce InStr používá k vrácení pozice prvního výskytu jednoho řetězce v jiném řetězci.
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.