VBA InStr

Funkcja Excel VBA InStr

Instr w VBA służy do znalezienia pozycji danego podciągu w ciągu znaków po określeniu metody porównania do funkcji, istnieją cztery różne metody porównania dla tej funkcji, Instr jest funkcją ciągu, ale wyjście zwrócone przez funkcję to numeryczne, więc wyjście tej funkcji jest w zmiennej całkowitej.

Łańcuch w języku VBA to nic innego jak ciąg znaków, czyli wszystkie teksty, które są opatrzone cudzysłowami, są traktowane jako ciągi znaków. Funkcja InStr to wbudowana funkcja tekstowa używana do manipulowania ciągami znaków. Na przykład - jeśli chcesz wyodrębnić podciąg z zdania lub chcesz zastosować zmiany w projekcie czcionki do określonego ciągu w serii znaków lub jeśli chcesz znaleźć pozycję znaku i wiele innych możliwości, możesz użyć InStr.

Składnia

Ma 4 argumenty, jak pokazano na poniższym obrazku.

  • [Start]: To nie jest obowiązkowe. Jest to wartość liczbowa, którą musimy określić, od której pozycji funkcja instr zacznie szukać podanego tekstu. Na przykład: jeśli chcesz wyszukać znak „a” w słowie „Bangalore” od trzeciej pozycji, musimy ustawić pozycję startową funkcji Instr jako 3. Tak więc od pozycji trzeciej znak „a” jest na pozycji 5. Jeśli zignorujesz ten parametr, domyślną wartością jest 1.
  • Ciąg 1: To jest rzeczywisty ciąg, który dostarczamy, tj. Z tego tekstu próbujemy znaleźć podłańcuch. Na przykład, jeśli szukasz ciągu „a” w „Bangalore”, String 1 w Bangalore.
  • Ciąg 2: To nic innego jak ciąg, którego szukamy. Na przykład, jeśli szukasz napisu „a” w „Bangalore” String 2 .
  • [Porównaj]: To znowu opcjonalny argument. W argumencie [porównaj] dostępne są trzy rodzaje opcji.

  • vbBinaryCompare: To jest nic innego jak wyszukiwanie podłańcucha (ciągu 2) w ciągu 1 z rozróżnianiem wielkości liter. Na przykład, jeśli szukamy „a” w słowie „Bangalore”, w wyniku instr zwróci 2, a jeśli szukasz dla „A” w słowie „Bangalore” Instr zwróci jako wynik 0, ponieważ podany ciąg jest wartością z dużych liter.

Możemy również podać zero (0) jako argument.

vbTextCompare: To nie jest rozróżniana wielkość liter w wyszukiwaniu ciągu 2 w ciągu 1. Na przykład, jeśli wyszukujemy „a” w słowie „Bangalore”, w wyniku instrukcji instr zwróci 2, a jeśli szukasz „A” w słowie „Bangalore” Instr zwróciłby również 2. Logika to A = a, B = b, C = c itd.….

Jako argument możemy również podać jeden (1).

vbDatabaseCompare: Służy do porównywania informacji z bazy danych, np. bazy danych Microsoft Access.

Możemy również podać jeden (-1) jako argument.

5 najlepszych przykładów użycia funkcji instr VBA

Możesz pobrać ten szablon Excel funkcji VBA Instr tutaj - Szablon Excel funkcji VBA Instr

Przykład 1

Zacznijmy od pierwszego przykładu. W słowie Bangalore znajdź pozycję znaku a.

Poniższy kod wykona zadanie za nas.

Kod:

 Sub Instr_Example1 () Dim i As Variant i = InStr ("Bangalore", "a") MsgBox i End Sub 

Teraz uruchom powyższy kod VBA za pomocą klawisza F5 lub możesz również uruchomić ten kod ręcznie, jak pokazano na poniższym zrzucie ekranu.

Wynik:

Przykład nr 2

Teraz w słowie Bangalore znajdź pozycję znaku „a” z trzeciej pozycji.

Poniższy kod wykona zadanie za nas.

Kod:

 Sub Instr_Example2 () Dim i As Variant i = InStr (3, "Bangalore", "a") MsgBox i End Sub 

Aby uruchomić powyższy kod, możesz użyć klawisza F5 lub możesz również uruchomić ten kod ręcznie, jak pokazano na poniższym zrzucie ekranu.

Wynik:

Teraz na powyższym obrazku spójrz na różnicę w stosunku do poprzedniego kodu. Ponieważ wspomnieliśmy, że pozycja początkowa znaku to 3, zignorowano pierwszy znak „a” na drugiej pozycji.

Przykład nr 3

Teraz zobaczymy wyszukiwanie z rozróżnianiem wielkości liter. W słowie Bangalore znajdź literę „A”.

W tym celu musimy dostarczyć argument porównania jako vbBinaryCompare.

Kod:

 Sub Instr_Example3 () Dim i As Variant i = InStr (1, "Bangalore", "A", vbBinaryCompare) MsgBox i End Sub 

Teraz uruchom ten kod za pomocą klawisza F5 lub możesz również uruchomić ten kod ręcznie.

Wynik:

Ponieważ dostarczyliśmy argument porównawczy jako funkcja vbBinaryCompare Instr, zwróciła wynik jako zero, ponieważ nie ma dużej litery „A” .

Przykład 4

Teraz zobaczymy jeszcze jedno wyszukiwanie z uwzględnieniem wielkości liter. W słowie Bangalore znajdź literę „A”. Poprzedni przykład zwrócił wynik jako zero.

Aby obejść tutaj podejście uwzględniające wielkość liter, musimy podać argument porównawczy jako vbTextCompare.

Kod:

 Sub Instr_Example4 () Dim i As Variant i = InStr (1, "Bangalore", "A", vbTextCompare) MsgBox i End Sub 

Teraz uruchom ten kod za pomocą klawisza F5 lub możesz również uruchomić ten kod ręcznie.

Wynik:

Przykład nr 5

Teraz zobaczymy zaawansowany poziom funkcji instr. Jeśli masz wiele arkuszy, które mają mniej lub bardziej podobną nazwę i chcesz ukryć wszystkie te arkusze naraz, możemy użyć poniższego kodu, aby ukryć określony arkusz.

Na przykład mam 5 arkuszy o nazwach Podsumowanie 1, Podsumowanie 2, Podsumowanie 3, Podsumowanie 4 i Arkusz danych.

Teraz chcę ukryć wszystkie arkusze, które mają słowo „Podsumowanie”. Użyj poniższego kodu, aby ukryć wszystkie arkusze, które mają w nazwie słowo Podsumowanie.

Kod:

 Sub To_Hide_Specific_Sheet () Dim Ws As Worksheet For each Ws In ActiveWorkbook.Worksheets If InStr (Ws.Name, "Summary")> 0 Then Ws.Visible = xlSheetVeryHidden End If Next Ws 'Funkcja InStr szuka słowa lub frazy w nazwie arkusza Jeśli znajdzie, zostanie ukryty End Sub 

Teraz uruchom ten kod za pomocą klawisza F5 lub możesz również uruchomić ten kod ręcznie i zobaczyć dane wyjściowe.

Podobnie, aby odkryć wszystkie te arkusze, użyj poniższego kodu.

Kod:

 Sub To_UnHide_Specific_Sheet () Dim Ws As Worksheet For each Ws In ActiveWorkbook.Worksheets If InStr (Ws.Name, "Summary")> 0 Then Ws.Visible = xlSheetVisible End If Next Ws 'Funkcja InStr wyszukuje słowo lub frazę w nazwie arkusza Jeśli znajdzie, zostanie ukryty End Sub 

Teraz uruchom ten kod za pomocą klawisza F5 lub możesz również uruchomić ten kod ręcznie i zobaczyć dane wyjściowe.

Rzeczy do zapamiętania

  • Instr to funkcja uwzględniająca wielkość liter. Aby wyeliminować ten problem z rozróżnianiem wielkości liter, musisz podać argument [porównaj] jako.
  • If you are searching for case sensitive character you need to supply the [compare] argument as by default VBA takes this as the argument even if you do not supply.
  • Instr is a VBA function so that you cannot use it in an excel worksheet like other built-in formulas.
  • If the function cannot find the String 2 the result will be zero.