INSTR फ़ंक्शन
वीबीए इंस्ट्र फ़ंक्शन जांचता है कि टेक्स्ट की एक स्ट्रिंग टेक्स्ट की दूसरी स्ट्रिंग में मिलती है या नहीं। पाठ नहीं मिलने पर यह 0 लौटाता है। अन्यथा यह उस चरित्र की स्थिति लौटाता है जहां पाठ पाया जाता है।
इंस्ट्र फ़ंक्शन निष्पादित करता है सटीक मैच। वाइल्डकार्ड का उपयोग करके सटीक मिलान / पैटर्न मिलान करने के बजाय VBA लाइक ऑपरेटर का उपयोग किया जा सकता है।
इंस्ट्र उदाहरण
निम्नलिखित कोड स्निपेट "लुक" शब्द के लिए "इस स्ट्रिंग में देखें" स्ट्रिंग की खोज करता है। इंस्ट्र फ़ंक्शन 1 देता है क्योंकि टेक्स्ट पहली स्थिति में पाया जाता है।
123 | उप FindSomeText ()MsgBox InStr ("इस स्ट्रिंग में देखें", "देखो")अंत उप |
यह दूसरा उदाहरण 7 देता है क्योंकि पाठ 7वें स्थान से प्रारंभ होता हुआ पाया जाता है:
123 | उप FindSomeText2 ()MsgBox InStr ("इस स्ट्रिंग में मत देखो", "देखो")अंत उप |
जरूरी! इंस्ट्र फ़ंक्शन है अक्षर संवेदनशील डिफ़ॉल्ट रूप से। इसका मतलब है कि "लुक" "लुक" से मेल नहीं खाएगा। परीक्षण को असंवेदनशील बनाने के लिए नीचे पढ़ें।
इंस्ट्र सिंटेक्स
इंस्ट्र फ़ंक्शन के लिए सिंटैक्स निम्नानुसार है:
1 | इंस्ट्र ([शुरू], स्ट्रिंग, सबस्ट्रिंग, [तुलना करें]) |
[शुरू] (वैकल्पिक) - यह वैकल्पिक तर्क खोज की प्रारंभिक स्थिति है। स्थिति 1 से खोज शुरू करने के लिए 1 दर्ज करें (या खाली छोड़ दें)। स्थिति 5 से खोजना शुरू करने के लिए 5 दर्ज करें। जरूरी! INSTR फ़ंक्शन 1 . से गिनती करके वर्ण स्थिति की गणना करता है [शुरू] स्थिति से नहीं.
डोरी - खोजने के लिए पाठ की स्ट्रिंग।
सबस्ट्रिंग - प्राथमिक स्ट्रिंग में खोजने के लिए पाठ की स्ट्रिंग।
[तुलना करें] (वैकल्पिक) - डिफ़ॉल्ट रूप से, Instr केस-संवेदी होता है। इस तर्क को सेट करके आप Instr Case को असंवेदनशील बना सकते हैं:
तर्क वीबी मान | तर्क पूर्णांक | विवरण |
वीबीबाइनरीतुलना |
0 | (डिफ़ॉल्ट) केस-संवेदी |
vbपाठ्य तुलना |
1 | केस - संवे्दनशील नहीं |
vbडेटाबेस तुलना करें |
2 | केवल एमएस एक्सेस। तुलना करने के लिए डेटाबेस में जानकारी का उपयोग करता है। |
इंस्ट्र स्टार्ट पोजीशन
Instr प्रारंभ स्थिति आपको उस वर्ण स्थिति को इंगित करने की अनुमति देती है जहां आप अपनी खोज शुरू करेंगे। हालांकि, ध्यान रखें कि इंस्ट्र आउटपुट हमेशा 1 से गिना जाएगा।
यहां हम पहले बी को छोड़ने के लिए शुरुआती स्थिति को 3 पर सेट करते हैं:
123 | उप Instr_StartPosition ()MsgBox InStr(3, "एबीसी एबीसी", "बी")अंत उप |
परिणाम 6 है क्योंकि दूसरा बी स्ट्रिंग में छठा वर्ण है।
केस-असंवेदनशील INSTR टेस्ट
डिफ़ॉल्ट रूप से, वीबीए "एल" को "एल" से अलग मानता है। दूसरे शब्दों में, VBA केस-संवेदी है। यह सभी पाठ कार्यों के लिए सही है। वीबीए केस-असंवेदनशील बनाने के लिए, [तुलना] तर्क को 1 या vbTextCompare पर सेट करें।
123 | सार्वजनिक उप FindText_IgnoreCase ()MsgBox InStr(1, "इस स्ट्रिंग में मत देखो", "देखो", vbTextCompare)अंत उप |
वैकल्पिक रूप से, आप अपने कोड मॉड्यूल के शीर्ष पर विकल्प तुलना टेक्स्ट जोड़ सकते हैं:
1 | विकल्प टेक्स्ट की तुलना करें |
12345 | विकल्प टेक्स्ट की तुलना करेंसार्वजनिक उप FindText_IgnoreCase2 ()MsgBox InStr ("इस स्ट्रिंग में मत देखो", "देखो")अंत उप |
टेक्स्ट की तुलना करने का विकल्प उस मॉड्यूल के सभी कोड को प्रभावित करेगा। मैं व्यक्तिगत रूप से इसे किसी भी मॉड्यूल के शीर्ष पर रखता हूं जो टेक्स्ट से संबंधित है क्योंकि मुझे कभी भी केस मतभेदों की परवाह नहीं है।
इंस्ट्रव फ़ंक्शन
इंस्ट्र फ़ंक्शन बाईं ओर से खोज करता है। इसके बजाय आप InstrRev फ़ंक्शन का उपयोग करके दाईं ओर से खोज सकते हैं। इंस्ट्रव फ़ंक्शन इंस्ट्र फ़ंक्शन के समान ही काम करता है।
123 | उप FindSomeText_FromRight ()MsgBox InStrRev ("इस स्ट्रिंग में देखें", "देखो")अंत उप |
इंस्ट्र फ़ंक्शन की तरह ही यह 1 लौटाएगा क्योंकि टेक्स्ट में "लुक" का केवल एक उदाहरण है। लेकिन अगर हम दूसरा "लुक" जोड़ते हैं, तो आप देखेंगे कि यह सबसे दाईं ओर "लुक" की स्थिति लौटाता है:
123 | उप FindSomeText_FromRight ()MsgBox InStrRev ("इस स्ट्रिंग लुक में देखें", "देखो")अंत उप |
आगे हम और इंस्ट्र उदाहरणों की समीक्षा करेंगे।
इनस्ट्रिंग उदाहरण
यदि स्ट्रिंग में सबस्ट्रिंग शामिल है
यहां हम एक इफ स्टेटमेंट का उपयोग यह जांचने के लिए करेंगे कि क्या किसी स्ट्रिंग में टेक्स्ट का सबस्ट्रिंग है:
123456789 | सार्वजनिक उप FindSomeText ()अगर InStr ("इस स्ट्रिंग में देखें", "देखो") = 0 तोMsgBox "कोई मेल नहीं"अन्यथाMsgBox "कम से कम एक मैच"अगर अंतअंत उप |
सेल में टेक्स्ट स्ट्रिंग खोजें
आप सेल में एक स्ट्रिंग भी पा सकते हैं:
12345 | उप Find_String_Cell ()अगर InStr(Range("B2").Value, "Dr.") > 0 फिररेंज ("सी 2")। मान = "डॉक्टर"अगर अंतअंत उप |
या कोशिकाओं की एक श्रृंखला के माध्यम से लूप करें ताकि यह परीक्षण किया जा सके कि कोशिकाओं में कुछ पाठ है या नहीं:
12345678910 | उप Search_Range_For_Text ()रेंज के रूप में मंद सेलरेंज में प्रत्येक सेल के लिए ("बी 2: बी 6")यदि InStr(cell.Value, "Dr.") > 0 तबसेल। ऑफसेट (0, 1)। मान = "डॉक्टर"अगर अंतअगली सेलअंत उप |
एक स्ट्रिंग में एक चरित्र की स्थिति का पता लगाएं
यह कोड एक स्ट्रिंग में एकल वर्ण की स्थिति ढूंढेगा और एक चर को स्थिति निर्दिष्ट करेगा:
1234 | उप Find_Char ()डिम एन अस लॉन्गn = InStr ("यहां देखें", "एल")अंत उप |
शब्द के लिए खोज स्ट्रिंग
यह कोड एक शब्द के लिए एक स्ट्रिंग खोजेगा:
12345678910 | उप Search_String_For_Word ()डिम एन अस लॉन्गn = InStr ("यहाँ देखो", "देखो")यदि n = 0 तोMsgBox "शब्द नहीं मिला"अन्यथाMsgBox "शब्द स्थिति में मिला:" & nअगर अंतअंत उप |
यदि चर में स्ट्रिंग है
यह कोड परीक्षण करेगा कि क्या एक स्ट्रिंग वेरिएबल में टेक्स्ट की एक स्ट्रिंग है:
12345678 | उप चर_Contains_String ()स्ट्रिंग के रूप में मंद strstr = "यहाँ देखो"अगर InStr(str, "यहाँ") > 0 तोMsgBox "यहाँ मिला!"अगर अंतअंत उप |
इंस्ट्र और लेफ्ट फंक्शन
टेक्स्ट को ट्रिम करने के लिए लेफ्ट, राइट, लेन और मिड जैसे अन्य टेक्स्ट फ़ंक्शंस के साथ इंस्ट्र का उपयोग किया जा सकता है।
लेफ्ट फंक्शन से आप टेक्स्ट की एक स्ट्रिंग से पहले टेक्स्ट को आउटपुट कर सकते हैं:
1234567891011 | उप Instr_Left ()स्ट्रिंग के रूप में मंद strडिम एन अस लॉन्गstr = "यहाँ देखो"n = InStr (str, "यहाँ")MsgBox लेफ्ट (str, n -1)अंत उप |
माइक्रोसॉफ्ट एक्सेस वीबीए में इंस्ट्र का उपयोग करना
उपरोक्त सभी उदाहरण एक्सेस वीबीए में ठीक उसी तरह काम करते हैं जैसे एक्सेल वीबीए में।
अधिक जानने के लिए, हमारा लेख पढ़ें: VBA पाठ कार्य