Znajdź tekst w ciągu (funkcja INSTR) - Przykłady kodu VBA

Funkcja INSTR

Funkcja VBA Instr sprawdza, czy ciąg tekstowy został znaleziony w innym ciągu tekstowym. Zwraca 0, jeśli tekst nie zostanie znaleziony. W przeciwnym razie zwraca pozycję znaku, w której znajduje się tekst.

Funkcja Instr wykonuje dokładny mecze. Zamiast tego można użyć operatora podobnego do VBA, aby wykonać niedokładne dopasowania/dopasowanie wzorców za pomocą symboli wieloznacznych.

Przykład instrukcji

Poniższy fragment kodu przeszukuje ciąg „Szukaj w tym ciągu” dla słowa „Wygląd”. Funkcja Instr zwraca 1, ponieważ tekst znajduje się na pierwszej pozycji.

123 Sub ZnajdźJakiTekst()MsgBox InStr("Spójrz w tym ciągu", "Spójrz")Napis końcowy

Ten drugi przykład zwraca 7, ponieważ tekst znajduje się od siódmej pozycji:

123 Sub ZnajdźJakiTekst2()MsgBox InStr("Nie szukaj w tym ciągu", "Spójrz")Napis końcowy

Ważny! Funkcja Instr to wielkość liter ma znaczenie domyślnie. Oznacza to, że „wygląd” nie będzie pasował do „wyglądu”. Aby uczynić test niewrażliwym na wielkość liter, przeczytaj poniżej.

Składnia instrukcji

Składnia funkcji Instr jest następująca:

1 Instr( [start], ciąg, podciąg, [porównaj] )

[start] (opcjonalnie) - Ten opcjonalny argument jest początkową pozycją wyszukiwania. Wpisz 1, aby rozpocząć wyszukiwanie od pozycji 1 (lub pozostaw puste). Wpisz 5, aby rozpocząć wyszukiwanie od pozycji 5. Ważny! Funkcja INSTR oblicza pozycję znaku, licząc od 1 NIE z pozycji [start].

strunowy – ciąg tekstu do wyszukania.

podciąg – ciąg tekstu do znalezienia w ciągu podstawowym.

[porównaj] (opcjonalnie) - Domyślnie w Instr jest rozróżniana wielkość liter. Ustawiając ten argument, możesz sprawić, że Instr Case będzie niewrażliwy:

Argument vb Wartość

Liczba całkowita argumentu Opis
vbBinaryCompare

0

(Domyślnie) Wielkość liter ma znaczenie

vbTextPorównaj

1

Nie uwzględnia wielkości liter

vbDatabasePorównaj

2

Tylko dostęp MS. Wykorzystuje informacje z bazy danych do porównania.

Pozycja początkowa instrumentu

Pozycja startowa Instr pozwala wskazać pozycję znaku, od której rozpoczniesz wyszukiwanie. Należy jednak pamiętać, że wynik Instr zawsze będzie liczony od 1.

Tutaj ustawiamy pozycję początkową na 3, aby pominąć pierwsze B:

123 Sub Instr_StartPosition()MsgBox InStr(3, "ABC ABC", "B")Napis końcowy

Wynik to 6, ponieważ drugie B jest szóstym znakiem w ciągu.

Test INSTR bez rozróżniania wielkości liter

Domyślnie VBA traktuje „L” inaczej niż „l”. Innymi słowy, w VBA rozróżniana jest wielkość liter. Dotyczy to wszystkich funkcji tekstowych. Aby VBA nie uwzględniała wielkości liter, ustaw argument [compare] na 1 lub vbTextCompare.

123 Public Sub FindText_IgnoreCase()MsgBox InStr(1, "Nie szukaj w tym ciągu", "look", vbTextCompare)Napis końcowy

Alternatywnie możesz dodać Option Compare Text na górze modułu kodu:

1 Opcja Porównaj tekst
12345 Opcja Porównaj tekstPublic Sub FindText_IgnoreCase2()MsgBox InStr("Nie szukaj w tym ciągu", "wyglądaj")Napis końcowy

Opcja Porównaj tekst wpłynie na cały kod w tym module. Osobiście umieszczam to na górze każdego modułu, który zajmuje się tekstem, ponieważ nigdy nie dbam o różnice w wielkościach liter.

Funkcja InstrRev

Funkcja Instr wyszukuje od lewej. Zamiast tego możesz wyszukiwać od prawej za pomocą funkcji InstrRev. Funkcja InstrRev działa bardzo podobnie do funkcji Instr.

123 Sub FindSomeText_FromRight()MsgBox InStrRev("Spójrz w tym ciągu", "Spójrz")Napis końcowy

Podobnie jak funkcja Instr, zwróci 1, ponieważ w tekście jest tylko jedno wystąpienie „Look”. Ale jeśli dodamy drugi „Wygląd”, zobaczysz, że zwraca on pozycję najbardziej po prawej „Wyglądu”:

123 Sub FindSomeText_FromRight()MsgBox InStrRev("Szukaj w tym ciągu Look", "Look")Napis końcowy

Następnie omówimy więcej przykładów Instr.

Przykłady InString

Jeśli ciąg zawiera podciąg

Tutaj użyjemy instrukcji If, aby sprawdzić, czy ciąg zawiera podciąg tekstu:

123456789 Public Sub FindSomeText()If InStr("Szukaj w tym ciągu", "look") = 0 WtedyMsgBox "Brak dopasowania"W przeciwnym razieMsgBox "Przynajmniej jeden mecz"Zakończ, jeśliNapis końcowy

Znajdź ciąg tekstowy w komórce

Możesz również znaleźć ciąg w komórce:

12345 Sub Find_String_Cell()If InStr(Range("B2").Value, "Dr.") > 0 WtedyZakres("C2").Value = "Doktor"Zakończ, jeśliNapis końcowy

Lub wykonaj pętlę przez zakres komórek, aby sprawdzić, czy komórki zawierają jakiś tekst:

12345678910 Sub Search_Range_For_Text()Przyciemnij komórkę jako zakresDla każdej komórki w zakresie("b2:b6")If InStr(cell.Value, "Dr.") > 0 Wtedycell.Offset(0, 1).Value = "Doktor"Zakończ, jeśliNastępna komórkaNapis końcowy

Znajdź pozycję postaci w ciągu

Ten kod znajdzie pozycję pojedynczego znaku w ciągu i przypisze pozycję do zmiennej:

1234 Sub Znajdź_znak()Dim n As Longn = InStr("Spójrz tutaj", "L")Napis końcowy

Wyszukaj ciąg słowa

Ten kod przeszuka ciąg dla słowa:

12345678910 Sub Search_String_For_Word()Dim n As Longn = InStr("Spójrz tutaj", "Spójrz")Jeśli n = 0 WtedyMsgBox "Nie znaleziono słowa"W przeciwnym razieMsgBox "Słowo znalezione w pozycji: " & nZakończ, jeśliNapis końcowy

Jeśli zmienna zawiera ciąg

Ten kod sprawdzi, czy zmienna ciągu zawiera ciąg tekstu:

12345678 Sub Variable_Contains_String()Dim str As Stringstr = "Spójrz tutaj"If InStr(str, "Tutaj") > 0 WtedyMsgBox "Tu znaleziono!"Zakończ, jeśliNapis końcowy

Instr i lewa funkcja

Instr może być używany wraz z innymi funkcjami tekstowymi, takimi jak Left, Right, Len i Mid, do przycinania tekstu.

Za pomocą funkcji Left możesz wyprowadzić tekst przed ciągiem tekstu:

1234567891011 Sub Instr_Left()Dim str As StringDim n As Longstr = "Spójrz tutaj"n = InStr(str, "Tutaj")MsgBox Left (str, n - 1)Napis końcowy

Korzystanie z Instr w Microsoft Access VBA

Wszystkie powyższe przykłady działają dokładnie tak samo w Access VBA, jak w Excel VBA.

Aby dowiedzieć się więcej, przeczytaj nasz artykuł: Funkcje tekstowe VBA

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave