ИНСТР функција
ВБА Инстр функција проверава да ли се низ текста налази у другом низу текста. Враћа 0 ако текст није пронађен. У супротном, враћа позицију знака на којој се налази текст.
Функција Инстр ради тачан шибице. Оператор ВБА Лике Оператор може се уместо тога користити за извођење нетачних подударања / подударања узорака коришћењем џокера.
Инстр Пример
Следећи исечак кода тражи реч „Погледај“ у низу „Тражи у овом низу“. Инстр функција враћа 1 јер се текст налази на првој позицији.
123 | Суб ФиндСомеТект ()МсгБок ИнСтр ("Погледај у овом низу", "Погледај")Енд Суб |
Овај други пример враћа 7 јер се текст налази на 7. позицији:
123 | Суб ФиндСомеТект2 ()МсгБок ИнСтр ("Не гледај у овом низу", "Погледај")Енд Суб |
Важно! Инстр функција је Велика и мала слова подразумевано. То значи да се „изглед“ неће подударати са „Погледај“. Да бисте учинили неосетљивим тест случај, прочитајте испод.
Инстр Синтакса
Синтакса функције Инстр је следећа:
1 | Инстр ([почетак], низ, подниз, [упореди]) |
[почетак] (опционално) - Овај опциони аргумент је почетна позиција претраживања. Унесите 1 да бисте започели претрагу са позиције 1 (или оставите празно). Унесите 5 да бисте започели претрагу са положаја 5. Важно! ИНСТР функција израчунава положај знака бројећи од 1 НЕ са позиције [старт].
низ - Низ текста за претраживање.
подниз - Низ текста који треба пронаћи у примарном низу.
[упореди] (опционално) - Подразумевано, Инстр разликује велика и мала слова. Постављањем овог аргумента можете учинити Инстр Цасе неосетљивим:
Аргумент вб Валуе | Аргумент Интегер | Опис |
вбБинариЦомпаре |
0 | (Подразумевано) Осетљиво на велика и мала слова |
вбТектЦомпаре |
1 | Не разликују |
вбДатабасеЦомпаре |
2 | Само МС Аццесс. Користи информације у бази података за поређење. |
Инстр почетна позиција
Почетна позиција Инстр -а вам омогућава да наведете позицију карактера на којој ћете започети претрагу. Имајте на уму, међутим, излаз Инстр ће се увек рачунати од 1.
Овде смо поставили почетну позицију на 3 да прескочимо први Б:
123 | Суб Инстр_СтартПоситион ()МсгБок ИнСтр (3, "АБЦ АБЦ", "Б")Енд Суб |
Резултат је 6 јер је други Б шести знак у низу.
ИНСТР тест не разликује велика и мала слова
Подразумевано, ВБА третира „Л“ различито од „л“. Другим речима, ВБА разликује велика и мала слова. Ово важи за све текстуалне функције. Да бисте ВБА учинили неосетљивим на велика и мала слова, поставите аргумент [успореди] на 1 или вбТектЦомпаре.
123 | Јавни суб ФиндТект_ИгнореЦасе ()МсгБок ИнСтр (1, "Не гледај у овај низ", "погледај", вбТектЦомпаре)Енд Суб |
Алтернативно, можете додати опцију Упореди текст на врх модула кода:
1 | Опција Упореди текст |
12345 | Опција Упореди текстЈавни суб ФиндТект_ИгнореЦасе2 ()МсгБок ИнСтр ("Не гледај у овај низ", "погледај")Енд Суб |
Опција Упореди текст ће утицати на сав код у том модулу. Ја лично ово стављам на врх сваког модула који се бави текстом јер ме никад не занимају разлике у величини слова.
ИнстрРев функција
Инстр функција претражује са леве стране. Уместо тога, можете претраживати са десне стране помоћу функције ИнстрРев. ИнстрРев функција ради врло слично функцији Инстр.
123 | Суб ФиндСомеТект_ФромРигхт ()МсгБок ИнСтрРев ("Погледај у овом низу", "Погледај")Енд Суб |
Баш као и функција Инстр, ово ће вратити 1 јер постоји само једна инстанца „Погледај“ у тексту. Али ако додамо други „Поглед“, видећете да он враћа положај крајње десног „Погледа“:
123 | Суб ФиндСомеТект_ФромРигхт ()МсгБок ИнСтрРев ("Погледај у овом низу Погледај", "Погледај")Енд Суб |
Затим ћемо прегледати још примера Инстр.
ИнСтринг Примери
Ако низ садржи подниз
Овде ћемо користити наредбу Иф за тестирање да ли стринг садржи подниз текста:
123456789 | Публиц Суб ФиндСомеТект ()Ако је ИнСтр ("Погледај у овом низу", "погледај") = 0 ОндаМсгБок "Нема подударања"ИначеМсгБок "Најмање једно подударање"Крај АкоЕнд Суб |
Пронађи текстуални низ у ћелији
Такође можете пронаћи низ у ћелији:
12345 | Суб Финд_Стринг_Целл ()Ако је ИнСтр (Опсег ("Б2"). Вредност, "Др.")> 0 ЗатимОпсег ("Ц2"). Вредност = "Доктор"Крај АкоЕнд Суб |
Или прођите кроз низ ћелија да бисте тестирали да ли ћелије садрже неки текст:
12345678910 | Суб Сеарцх_Ранге_Фор_Тект ()Дим целл Ас РангеЗа сваку ћелију у домету ("б2: б6")Ако је ИнСтр (целл.Валуе, "Др.")> 0 Затимцелл.Оффсет (0, 1) .Валуе = "Доктор"Крај АкоСледећа ћелијаЕнд Суб |
Пронађи позицију лика у низу
Овај код ће пронаћи положај једног знака у низу и доделити позицију променљивој:
1234 | Суб Финд_Цхар ()Дим н Ас Лонгн = ИнСтр ("Овде погледајте овде", "Л")Енд Суб |
Тражи низ за Ворд
Овај код ће тражити реч у низу:
12345678910 | Суб Сеарцх_Стринг_Фор_Ворд ()Дим н Ас Лонгн = ИнСтр ("Овде погледајте овде", "Погледајте")Ако је н = 0 ТадаМсгБок "Реч није пронађена"ИначеМсгБок "Реч пронађена на положају:" & нКрај АкоЕнд Суб |
Ако променљива садржи низ
Овај код ће тестирати да ли променљива низа садржи низ текста:
12345678 | Под променљива_Садржи_Низ ()Дим стр Ас Стрингстр = "Погледајте овде"Ако је ИнСтр (стр, "Овде")> 0 ЗатимМсгБок "Овде је пронађено!"Крај АкоЕнд Суб |
Инстр и функција Лефт
Инстр се може користити заједно са другим текстуалним функцијама као што су Лефт, Ригхт, Лен и Мид за скраћивање текста.
Помоћу функције Лефт можете исписати текст пре низа текста:
1234567891011 | Суб Инстр_Лефт ()Дим стр Ас СтрингДим н Ас Лонгстр = "Погледајте овде"н = ИнСтр (стр, "Овде")МсгБок Лево (стр, н - 1)Енд Суб |
Коришћење Инстр -а у Мицрософт Аццесс ВБА
Сви горе наведени примери раде потпуно исто у Аццесс ВБА као и у Екцел ВБА.
Да бисте сазнали више, прочитајте наш чланак: ВБА функције текста