Намиране на текст в низ (функция INSTR) - Примери за VBA код

INSTR функция

Функцията VBA Instr проверява дали низ от текст е намерен в друг низ от текст. Връща 0, ако текстът не е намерен. В противен случай връща позицията на знака, където е намерен текстът.

Функцията Instr изпълнява точно мачове. Операторът като VBA Like може да се използва вместо това за извършване на неточни съвпадения / съвпадение на шаблони с помощта на заместващи символи.

Пример Instr

Следният кодов фрагмент търси в думата „Погледни в този низ“ думата „Погледнете“. Функцията Instr връща 1, защото текстът се намира на първа позиция.

123 Sub FindSomeText ()MsgBox InStr ("Погледни в този низ", "Погледни")End Sub

Този втори пример връща 7, защото текстът е намерен, започвайки от 7 -ма позиция:

123 Sub FindSomeText2 ()MsgBox InStr ("Не гледайте в този низ", "Погледнете")End Sub

Важно! Функцията Instr е различаващ главни от малки букви по подразбиране. Това означава, че „поглед“ няма да съвпада с „Поглед“. За да направите чувствителността на тестовия регистър прочетена по-долу.

Instr синтаксис

Синтаксисът за функцията Instr е следният:

1 Instr ([начало], низ, подниза, [сравни])

[старт] (по избор) - Този незадължителен аргумент е началната позиция на търсенето. Въведете 1, за да започнете търсенето от позиция 1 (или оставете празно). Въведете 5, за да започнете търсенето от позиция 5. Важно! Функцията INSTR изчислява позицията на знака, като брои от 1 НЕ от позицията [начало].

низ - Низ текст за търсене.

подниза - Низ текст, който да се намери в основния низ.

[сравни] (по избор) - По подразбиране Instr е чувствителен към регистър. Като зададете този аргумент, можете да направите Instr Case нечувствителни:

Аргумент vb Стойност

Аргумент Цело число Описание
vbBinaryCompare

0

(По подразбиране) Чувствителен към регистър

vbTextCompare

1

Не са чувствителни към малки и големи букви

vbDatabaseCompare

2

Само MS достъп. Използва информация в базата данни за извършване на сравнение.

Instr начална позиция

Началната позиция Instr ви позволява да посочите позицията на знака, където ще започнете търсенето. Имайте предвид обаче, че изходът Instr винаги ще се брои от 1.

Тук задаваме началната позиция на 3, за да пропуснем първата B:

123 Sub Instr_StartPosition ()MsgBox InStr (3, "ABC ABC", "B")End Sub

Резултатът е 6, защото вторият B е 6 -ият знак в низа.

Чувствителен към регистър INSTR тест

По подразбиране VBA третира „L“ различно от „l“. С други думи, VBA чувствителен към регистър. Това важи за всички текстови функции. За да направите VBA нечувствителен към регистъра, задайте аргумента [compare] на 1 или vbTextCompare.

123 Публичен под FindText_IgnoreCase ()MsgBox InStr (1, "Не гледай в този низ", "поглед", vbTextCompare)End Sub

Като алтернатива можете да добавите Option Compare Text в горната част на кодовия модул:

1 Опция Сравняване на текст
12345 Опция Сравняване на текстПубличен под FindText_IgnoreCase2 ()MsgBox InStr ("Не гледайте в този низ", "погледнете")End Sub

Опция Сравняване на текст ще повлияе на целия код в този модул. Аз лично поставям това в горната част на всеки модул, който се занимава с текст, защото никога не ме интересуват различията в регистрите.

InstrRev функция

Функцията Instr търси отляво. Вместо това можете да търсите отдясно с помощта на функцията InstrRev. Функцията InstrRev работи много подобно на функцията Instr.

123 Sub FindSomeText_FromRight ()MsgBox InStrRev ("Погледни в този низ", "Погледни")End Sub

Точно като функцията Instr, това ще върне 1, защото има само един екземпляр на „Погледни“ в текста. Но ако добавим втори „Поглед“, ще видите, че той връща позицията на най-десния „Поглед“:

123 Sub FindSomeText_FromRight ()MsgBox InStrRev ("Погледни в този низ Погледни", "Погледни")End Sub

След това ще разгледаме още примери за Instr.

Примери за InString

Ако низът съдържа подниза

Тук ще използваме оператор If, за да проверим дали низ съдържа подниза от текст:

123456789 Public Sub FindSomeText ()Ако InStr ("Погледни в този низ", "погледни") = 0 ТогаваMsgBox "Няма съвпадение"ИначеMsgBox „Най -малко едно съвпадение“Край АкоEnd Sub

Намерете текстов низ в клетка

Можете също да намерите низ в клетка:

12345 Sub Find_String_Cell ()Ако InStr (Диапазон ("B2"). Стойност, "Д -р")> 0 ТогаваДиапазон ("C2"). Стойност = "Доктор"Край АкоEnd Sub

Или преминете през диапазон от клетки, за да проверите дали клетките съдържат някакъв текст:

12345678910 Sub Search_Range_For_Text ()Затъмняване на клетката като обхватЗа всяка клетка в обхвата ("b2: b6")Ако InStr (cell.Value, "Dr.")> 0 Тогаваcell.Offset (0, 1) .Value = "Доктор"Край АкоСледващата клеткаEnd Sub

Намерете позицията на знак в низ

Този код ще намери позицията на един символ в низ и ще определи позицията на променлива:

1234 Sub Find_Char ()Dim n As Longn = InStr ("Тук вижте тук", "L")End Sub

Търсете низа за Word

Този код ще търси низ за дума:

12345678910 Sub Search_String_For_Word ()Dim n As Longn = InStr ("Тук погледнете тук", "Погледнете")Ако n = 0, тогаваMsgBox „Думата не е намерена“ИначеMsgBox "Думата е намерена на позиция:" & nКрай АкоEnd Sub

Ако променливата съдържа низ

Този код ще тества дали низова променлива съдържа низ от текст:

12345678 Sub Variable_Contains_String ()Dim str As Stringstr = "Погледни тук"Ако InStr (str, "Тук")> 0 ТогаваMsgBox "Тук е намерено!"Край АкоEnd Sub

Instr и лявата функция

Instr може да се използва заедно с други текстови функции като ляво, дясно, Len и средна за подрязване на текст.

С функцията Left можете да изведете текста преди низ от текст:

1234567891011 Sub Instr_Left ()Dim str As StringDim n As Longstr = "Погледни тук"n = InStr (str, "Тук")MsgBox вляво (str, n - 1)End Sub

Използване на Instr в Microsoft Access VBA

Всички горепосочени примери работят абсолютно същото в Access VBA като в Excel VBA.

За да научите повече, прочетете нашата статия: VBA текстови функции

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave