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 zwracane 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 seria znaków, tj. Wszystkie teksty, które są zaopatrzone w podwójne cudzysłowy, 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żyj 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” z 3 -ciej pozycji, musimy powiedzieć funkcji InStr pozycji wyjściowej jako 3. So od 3 -ciej pozycji, znak „a” jest w 5 -tego położenia. Jeśli zignorujesz ten parametr, wartość domyślna to 1.
- Ciąg 1: To jest rzeczywisty ciąg, który dostarczamy, tj. Z tego tekstu próbujemy znaleźć podciąg. 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 nic innego, jak wyszukiwanie podłańcucha (ciągu 2) z rozróżnianiem wielkości liter w ciągu 1. Na przykład, jeśli szukamy „a” w słowie „Bangalore”, Instr zwróci jako wynik 2, a jeśli wyszukują „A” w słowie „Bangalore”, wówczas 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 szukamy „a” w słowie „Bangalore” , jako wynik Instr zwróci 2, a jeśli szukasz „ A ” w słowie „ Bangalore ” zwróciłby również Instr 2. Logika to A = a, B = b, C = c itd.….
Możemy również podać jeden (1) jako argument.
vbDatabaseCompare: Służy do porównywania informacji z bazy danych, tj. bazy danych Microsoft Access.
Możemy również podać jeden (-1) jako argument.
5 najlepszych przykładów użycia funkcji instr VBA
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. Skoro już wspomnieliśmy pozycję wyjściową charakteru jako 3, to ignorowane pierwszą literę „a” Pod 2 nd pozycję.
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:

Since we have supplied the compare argument as vbBinaryCompare Instr function returned the result as zero because there are no uppercase letter “A” exists.
Example #4
Now we will see one more case sensitive search. In the word Bangalore, find the letter “A.” The previous example returned the result as zero.
In order to overcome the case sensitive approach here, we need to supply the compare argument as vbTextCompare.
Code:
Sub Instr_Example4() Dim i As Variant i = InStr(1, "Bangalore", "A", vbTextCompare) MsgBox i End Sub
Now Run, this code using the F5 Key, or you can also run this code manually.

Output:

Example #5
Now we will see the advanced level of Instr function. If you have many sheets that have a more or less similar name and you want to hide all those sheets at once, we can use the below code to hide a specific sheet.
For example, I have 5 sheets named Summary 1, Summary 2, Summary 3, Summary 4, and Data Sheet.

Now I want to hide all those sheets which have the word “Summary.” Use the below code to hide all the sheets which have the word Summary in its name.
Code:
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 'InStr function looks for word or phrase in the sheet name 'If it finds then it will be hidden End Sub
Now Run, this code using the F5 Key, or you can also run this code manually and see the Output.

Similarly, in order to unhide all those sheets, use the below code.
Code:
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 'InStr function looks for word or phrase in the sheet name 'If it finds then it will be hidden End Sub
Now Run, this code using the F5 Key, or you can also run this code manually and see the Output.

Things to Remember
- Instr is a case sensitive function. In order to eliminate this case sensitive issue, you need to supply the (compare) argument as.
- 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 jest funkcją VBA, więc nie możesz jej używać w arkuszu programu Excel, tak jak w innych wbudowanych formułach.
- Jeśli funkcja nie może znaleźć ciągu 2, wynikiem będzie zero.