InStr

InStr फ़ंक्शन VBA में स्ट्रिंग के भीतर विशिष्ट टेक्स्ट की स्थिति खोजने के लिए उपयोग किया जाता है।

मूल सिंटैक्स

InStr([start], string1, string2, [compare])

पैरामीटर

पैरामीटरविवरण
start(वैकल्पिक) खोज शुरू करने की स्थिति। डिफ़ॉल्ट 1 है।
string1खोजी जाने वाली स्ट्रिंग
string2खोजने के लिए सबस्ट्रिंग
compare(वैकल्पिक) तुलना मोड। vbBinaryCompare (डिफ़ॉल्ट, केस-संवेदनशील) या vbTextCompare (केस-असंवेदनशील)

रिटर्न मान

  • यदि पाया गया: पहली घटना की स्थिति (1 से शुरू)
  • यदि नहीं पाया गया: 0

मूल उदाहरण

साधारण खोज

Sub BasicInStr()
    Dim position As Long

    position = InStr("Hello World", "World")
    Debug.Print position  ' 7 प्रदर्शित करता है

    position = InStr("Hello World", "xyz")
    Debug.Print position  ' 0 प्रदर्शित करता है (नहीं मिला)
End Sub

खोज स्थिति निर्दिष्ट करना

Sub InStrWithStart()
    Dim text As String
    Dim pos1 As Long, pos2 As Long

    text = "apple, orange, apple, banana"

    ' पहले से खोजें
    pos1 = InStr(1, text, "apple")
    Debug.Print "पहला apple: " & pos1  ' 1

    ' पहले के बाद से खोजें
    pos2 = InStr(pos1 + 1, text, "apple")
    Debug.Print "दूसरा apple: " & pos2  ' 16
End Sub

केस-संवेदनशील बनाम केस-असंवेदनशील खोज

Sub CompareMode()
    Dim text As String
    text = "Hello World"

    ' केस-संवेदनशील (डिफ़ॉल्ट)
    Debug.Print InStr(1, text, "WORLD", vbBinaryCompare)  ' 0

    ' केस-असंवेदनशील
    Debug.Print InStr(1, text, "WORLD", vbTextCompare)   ' 7
End Sub
チェック

केस-असंवेदनशील खोज के लिए vbTextCompare का उपयोग करें। यह उपयोगकर्ता इनपुट को संभालते समय उपयोगी है जहां केस भिन्न हो सकता है।

व्यावहारिक उदाहरण

टेक्स्ट में कीवर्ड की जांच

Sub CheckKeyword()
    Dim email As String
    email = "user@example.com"

    If InStr(email, "@") > 0 Then
        Debug.Print "वैध ईमेल प्रारूप"
    Else
        Debug.Print "अमान्य ईमेल प्रारूप"
    End If
End Sub

सभी घटनाओं को खोजना

Sub FindAllOccurrences()
    Dim text As String
    Dim search As String
    Dim pos As Long
    Dim count As Integer

    text = "the quick brown fox jumps over the lazy dog near the tree"
    search = "the"
    pos = 1
    count = 0

    Do
        pos = InStr(pos, text, search)
        If pos > 0 Then
            count = count + 1
            Debug.Print "स्थिति " & pos & " पर '" & search & "' मिला"
            pos = pos + 1
        End If
    Loop While pos > 0

    Debug.Print "कुल घटनाएं: " & count
End Sub

सबस्ट्रिंग निकालना

Sub ExtractDomain()
    Dim email As String
    Dim atPos As Long
    Dim domain As String

    email = "user@example.com"

    atPos = InStr(email, "@")
    If atPos > 0 Then
        domain = Mid(email, atPos + 1)
        Debug.Print "डोमेन: " & domain  ' example.com
    End If
End Sub

InStrRev - अंत से खोजना

InStrRev स्ट्रिंग के अंत से खोजता है:

Sub UseInStrRev()
    Dim path As String
    Dim lastSlash As Long
    Dim fileName As String

    path = "C:\Users\Documents\file.txt"

    ' अंतिम बैकस्लैश खोजें
    lastSlash = InStrRev(path, "\")
    fileName = Mid(path, lastSlash + 1)

    Debug.Print "फ़ाइल नाम: " & fileName  ' file.txt
End Sub
チェック
InStrRev फ़ाइल पथ से फ़ाइल नाम निकालने या अंतिम डिलीमीटर खोजने के लिए उपयोगी है।

सारांश

InStr फ़ंक्शन VBA में टेक्स्ट खोज के लिए मौलिक उपकरण है:

उपयोगविवरण
InStr(string1, string2)साधारण खोज
InStr(start, string1, string2)विशिष्ट स्थिति से खोजें
InStr(..., vbTextCompare)केस-असंवेदनशील खोज
InStrRev(string1, string2)अंत से खोजें

मुख्य बिंदु:

  • 0 का रिटर्न मान इंगित करता है कि सबस्ट्रिंग नहीं मिला
  • स्थिति 1 से शुरू होती है
  • सभी घटनाओं को खोजने के लिए लूप में उपयोग करें
#VBA #InStr #स्ट्रिंग #टेक्स्ट खोज