Vrátí hodnotu typu Variant (Long) určující pozici prvního výskytu jednoho řetězce v jiném řetězci.
Zde naleznete několik příkladůSyntaxe
InStr([začátek, ] řetězec1, řetězec2 [, porovnání ] )
Syntaxe funkce InStr zahrnuje následující argumenty (Argument: Hodnota, která poskytuje informace určité akci, události, metodě, vlastnosti, funkci nebo proceduře.):
| Argument |
Popis |
| začátek |
Nepovinný argument. Číselný výraz (Číselný výraz: Libovolný výraz, jehož výsledkem je číslo. Výraz může být libovolnou kombinací proměnných, konstant, funkcí a operátorů.), který nastaví počáteční pozici pro každé vyhledávání. Pokud je tento argument vynechán, bude vyhledávání zahájeno v pozici prvního znaku. Jestliže argument začátek obsahuje hodnotu Null (Hodnota Null: Hodnota, kterou můžete zadat do pole nebo ji použit ve výrazech a dotazech a označit tak chybějící nebo neznámá data. V jazyce Visual Basic označuje klíčové slovo Null hodnotu Null. Některá pole, například pole primárního klíče, nemohou obsahovat hodnoty Null.), dojde k chybě. Je-li zadán argument porovnání, je nutné zadat i argument začátek. |
| řetězec1 |
Povinný argument. Prohledávaný řetězcový výraz (Řetězcový výraz: Výraz, který je vyhodnocen jako posloupnost sousedících znaků. Prvky výrazu mohou zahrnovat: funkce vracející řetězec nebo řetězec typu Variant (VarType 8), řetězcový literál, konstantu, proměnnou nebo řetězec typu Variant</.). |
| řetězec2 |
Povinný argument. Hledaný řetězcový výraz. |
| porovnání |
Nepovinný argument. Určuje typ porovnání řetězců (Porovnání řetězců: Použití určitého operátoru za účelem zjištění, zda je jeden řetězec delší nebo stejně dlouhý jako druhý. Pomocí příkazu Option Compare (Porovnání s možnostmi) lze zadat binární porovnání (s rozlišováním malých a velkých písmen) nebo porovnání textové (bez rozlišování malých a velkých písmen).). Jestliže má argument porovnání hodnotu Null, dojde k chybě. Pokud je argument porovnání vynechán, je typ porovnání určen nastavením příkazu Option
Compare. Chcete-li při porovnání použít pravidla specifická pro národní prostředí, zadejte platný identifikátor národního prostředí (LCID). |
Nastavení
Nastavení argumentu porovnání:
| Konstanta |
Hodnota |
Popis |
| vbUseCompareOption |
-1 |
Provádí porovnání používající nastavení příkazu Option Compare. |
| vbBinaryCompare |
0 |
Provádí binární porovnání. |
| vbTextCompare |
1 |
Provádí textové porovnání. |
| vbDatabaseCompare |
2 |
Pouze v aplikaci Aplikace Microsoft Office Access 2007. Provádí porovnání na základě informací v databázi. |
Návratové hodnoty
| Podmínka |
Hodnota vrácená funkcí InStr |
| řetězec1 je nulové délky |
0 |
| řetězec1 má hodnotu Null |
Null |
| řetězec2 je nulové délky |
začátek |
| řetězec2 má hodnotu Null |
Null |
| řetězec2 nelze najít |
0 |
| řetězec2 je v řetězci řetězec1 obsažen
|
Pozice nalezení shody |
| začátek > řetězec2 |
0 |
Poznámky
V případě dat typu Byte obsažených v řetězci se používá funkce InStrB. Funkce InStrB nevrací pozici znaku prvního výskytu jednoho řetězce v jiném, ale pozici daného bajtu.
Příklady
Použití funkce inStr ve výrazu Funkci InStr lze použít vždy, když lze použít výrazy. Chcete-li například zjistit umístění první tečky (.) v poli s adresou IP (s názvem AdresaIP, můžete k tomu následujícím způsobem použít funkci InStr:
InStr(1,[AdresaIP],".")
Funkce InStr postupně projde všechny hodnoty v poli AdresaIP a vrátí pozici první tečky. Pokud je tedy první část adresy IP 10., vrátí funkce hodnotu 3.
Pomocí dalších funkcí zpracovávajících výstup funkce InStr pak můžete následovně získat část adresy IP před první tečkou:
Left([AdresaIP],(InStr(1,[AdresaIP],".")-1))
V uvedeném příkladu vrátí příkaz InStr(1,[AdresaIP],".") pozici první tečky. Odečtení 1 označuje, kolik znaků je před první tečkou. V našem případě jsou to dva znaky. Funkce Left pak extrahuje zadaný počet znaků z levé části pole AdresaIP a vrátí hodnotu 10.
Použití funkce InStr v kódu jazyka VBA
Poznámka: Následující příklady uvádějí použití této funkce v modulu jazyka Visual Basic for Applications (VBA). Další informace o práci s jazykem VBA získáte tak, že klepnete na položku Referenční informace pro vývojáře v rozevíracím seznamu vedle pole Hledat a do pole pro hledání zadáte jeden nebo více pojmů.
V tomto příkladu je pomocí funkce InStr vrácena pozice prvního výskytu jednoho řetězce v jiném.
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.