VBA स्ट्रिंग हेरफेर फ़ंक्शन और Operaमरोड़
⚡ स्मार्ट सारांश
VBA स्ट्रिंग मैनिपुलेशन फ़ंक्शन और Operaटॉर्स संयोजन, माप और निकास करते हैंtracएक्सेल मैक्रो के अंदर टेक्स्ट को संयोजित करना। यह पृष्ठ संयोजन ऑपरेटर, लेफ्ट, राइट, मिड, लेन और इनस्ट्र फ़ंक्शन, स्प्लिटिंग और जॉइनिंग, और उन त्रुटियों के बारे में बताता है जो अक्सर स्ट्रिंग कोड को बाधित करती हैं।

VBA स्ट्रिंग Operaमरोड़
स्ट्रिंग डेटा का उपयोग संख्याओं, वर्णों और प्रतीकों से बने डेटा को रखने के लिए किया जाता है। “जुलाई-2015” स्ट्रिंग डेटा का एक उदाहरण है। यह इनसे बना है
- वर्ण (जुलाई)
- प्रतीक (-)
- Numbers (2015)
स्ट्रिंग ऑपरेटर का उपयोग स्ट्रिंग डेटा में हेरफेर करने के लिए किया जाता है। उदाहरण के लिए, आप महीने और वर्ष के पहले 2015 अक्षरों से जुलाई-3 का मान जोड़ सकते हैं जैसे “Jul-2015”।
निम्न तालिका संयोजन VBA स्ट्रिंग ऑपरेटर को दर्शाती है।
| एस / एन | Operaटो | विवरण | उदाहरण | उत्पादन |
|---|---|---|---|---|
| 1 | & | Concatenate: इस ऑपरेटर का उपयोग स्ट्रिंग्स को एक साथ जोड़ने के लिए किया जाता है | “जॉन” और “डो” | जॉन डो |
उदाहरण स्रोत Code
MsgBox "John " & "Doe", vbOKOnly, "Concatenate Operator"
उपरोक्त कोड को निष्पादित करने से निम्नलिखित परिणाम प्राप्त होता है
एम्परसैंड एकमात्र ऐसा प्रतीक नहीं है जो टेक्स्ट को जोड़ने के लिए उपयोग किया जाता है, और संख्याओं के शामिल होने पर इन दोनों के बीच का अंतर महत्वपूर्ण हो जाता है।
स्ट्रिंग संयोजन के लिए & और + के बीच अंतर
VBA दो टेक्स्ट वैल्यू के बीच एम्परसेंड और प्लस साइन दोनों को स्वीकार करता है, इसलिए शुरुआती लोग अक्सर इन्हें एक ही मान लेते हैं। लेकिन जैसे ही एक ऑपरेंड संख्या या खाली वैल्यू होता है, ये अलग तरह से व्यवहार करते हैं, और इनमें से केवल एक ही सुरक्षित है।
| बिहेवियर | & (एम्परसैंड) | + (प्लस) |
|---|---|---|
| दो पाठ मान | उनसे जुड़ता है: “Guru” और “99” रिटर्न Guru99 | उनसे जुड़ता है: “Guru” + “99” रिटर्न Guru99 |
| पाठ और एक संख्या | संख्या को टेक्स्ट में परिवर्तित करता है: “Age ” & 30 लिखने पर Age 30 प्राप्त होता है | टाइप मिसमैच त्रुटि उत्पन्न होती है |
| दो संख्यात्मक स्ट्रिंग | “10” और “5” का योग 105 होता है | “10” + “5” का योग 15 हो सकता है। |
| एक शून्य मान | Null को खाली स्ट्रिंग के रूप में मानता है | यह Null लौटाता है और पूरे परिणाम को खारिज कर देता है। |
💡टिप: संयोजन के लिए हमेशा एम्परसैंड का प्रयोग करें और प्लस चिह्न को आरक्षित रखें। अंकगणितीय आपरेशनसएम्परसैंड से पहले और बाद में एक स्पेस दें, क्योंकि VBA द्वारा "Total&" को लॉन्ग टाइप डिक्लेरेशन कैरेक्टर के रूप में पढ़ा जाता है।
VBA स्ट्रिंग मैनिपुलेशन फ़ंक्शन
VBA स्ट्रिंग मैनिपुलेशन एक महत्वपूर्ण तत्व है मैक्रो प्रोग्रामिंग के लिए एक्सेल VBA और स्ट्रिंग ऑपरेशन। एक्सेल विभिन्न प्रकार के VBA स्ट्रिंग मैनिपुलेशन फ़ंक्शन प्रदान करता है जैसे:
- वाम: का उपयोग किया जाता हैtracस्ट्रिंग के बाईं ओर से t अक्षर
- सही: का उपयोग किया जाता हैtracस्ट्रिंग के दाईं ओर से t अक्षर
- मध्यम: का उपयोग किया जाता हैtracकिसी स्ट्रिंग के मध्य से एक सबस्ट्रिंग।
- लेन: इसका उपयोग स्ट्रिंग की लंबाई ज्ञात करने के लिए किया जाता है
- निर्देप्राप्तगुम: इसका उपयोग स्ट्रिंग में सबस्ट्रिंग की स्थिति ज्ञात करने के लिए किया जाता है
- ट्रिमस्ट्रिंग के दोनों सिरों से रिक्त स्थान हटाने के लिए : का उपयोग किया जाता है।
- बदलें: का उपयोग एक सबस्ट्रिंग के हर बार आने को दूसरे सबस्ट्रिंग से बदलने के लिए किया जाता है।
- यूकेस / एलकेसस्ट्रिंग को अपर केस या लोअर केस में बदलने के लिए : का उपयोग किया जाता है।
नीचे दी गई तालिका में प्रत्येक फ़ंक्शन का सिंटैक्स एक उदाहरण सहित दिखाया गया है, ताकि आप पैटर्न को सीधे मैक्रो में कॉपी कर सकें।
| समारोह | वाक्य - विन्यास | उदाहरण | उत्पादन |
|---|---|---|---|
| वाम | बाएँ (स्ट्रिंग, लंबाई) | बाएँ (“जुलाई-2015”, 3) | जुलाई |
| सही | दायाँ(स्ट्रिंग, लंबाई) | राइट (“जुलाई-2015”, 4) | 2015 |
| मध्यम | मध्य(स्ट्रिंग, प्रारंभ, लंबाई) | मध्य (“जुलाई-2015”, 5, 4) | 2015 |
| लेन | लेन(स्ट्रिंग) | लेन (“जुलाई-2015”) | 8 |
| निर्देप्राप्तगुम | InStr(start, string, substring) | InStr(1, “जुलाई-2015”, “-”) | 4 |
| ट्रिम | ट्रिम(स्ट्रिंग) | काट-छांट करना(" Guru99 “) | Guru99 |
| बदलें | बदलें(स्ट्रिंग, खोजें, बदलें) | बदलें(“जुलाई-2015”, “-”, “/”) | जुलाई/2015 |
| यूकेस | यूकेस(स्ट्रिंग) | UCase(“guru99”) | गुरु99 |
नीचे दिया गया मैक्रो इन कई फ़ंक्शनों को मिलाकर एक दिनांक लेबल को उसके भागों से पुनर्निर्मित करता है।
Sub StringFunctionsDemo() Dim Source As String Dim MonthPart As String Dim YearPart As String Source = "July-2015" ' Take the first three characters MonthPart = Left(Source, 3) ' Take the last four characters YearPart = Right(Source, 4) MsgBox MonthPart & "-" & YearPart, vbOKOnly, "String Functions" End Sub
मैक्रो चलाने पर जुलाई-2015 प्रदर्शित होता है। प्रत्येक फ़ंक्शन एक नया मान लौटाता है और मूल स्ट्रिंग को अपरिवर्तित छोड़ देता है, यही कारण है कि परिणामों को एक ही अभिव्यक्ति में सुरक्षित रूप से संयोजित किया जा सकता है।
ये सभी फ़ंक्शन एक समय में एक ही स्ट्रिंग पर काम करते हैं। जब किसी एक मान में पूरी सूची होती है, तो दो अन्य फ़ंक्शन इसे बेहतर ढंग से संभालते हैं।
VBA में स्ट्रिंग को विभाजित और संयोजित कैसे करें
एक्सेल में पेस्ट किया गया डेटा अक्सर एक लंबे मान के रूप में आता है, जिसमें प्रत्येक आइटम के बीच एक विभाजक होता है, जैसे "पेप्सी, कोक, फैंटा, जूस"। इसे मिड और इंस्ट्रक्टिव फ़ंक्शन से पढ़ना धीमा और मुश्किल होता है। वीबीए ठीक इसी काम के लिए दो फ़ंक्शन प्रदान करता है।
विभाजित करें यह एक सीमांकित स्ट्रिंग लेता है और एक शून्य-आधारित सरणी लौटाता है, जिसमें प्रत्येक आइटम में एक तत्व होता है। जुडें यह इसका उल्टा करता है, एक ऐरे लेता है और तत्वों के बीच विभाजक के साथ एक एकल स्ट्रिंग लौटाता है। ध्यान दें कि जॉइन ऐरे पर काम करता है, दो अलग-अलग स्ट्रिंग पर नहीं।
Sub SplitAndJoinDemo() Dim Source As String Dim Items() As String Dim i As Long Source = "Pepsi,Coke,Fanta,Juice" ' Break the value into an array on every comma Items = Split(Source, ",") For i = LBound(Items) To UBound(Items) Sheet1.Cells(i + 1, 1).Value = Items(i) Next i ' Rebuild the list with a different separator MsgBox Join(Items, " | "), vbOKOnly, "Joined List" End Sub
यह लूप प्रत्येक पेय को वर्कशीट की अपनी-अपनी पंक्ति में लिखता है, और फिर मैसेज बॉक्स में Pepsi | Coke | Fanta | Juice लिखा आता है। तीन बिंदु इस पैटर्न को प्रोडक्शन कोड में विश्वसनीय बनाते हैं:
- शून्य-आधारित परिणाम: Split हमेशा 0 से क्रमांकित एक ऐरे लौटाता है, चाहे Option Base कुछ भी सेट किया गया हो, इसलिए लूप को एक निश्चित संख्या के बजाय LBound और UBound के साथ चलाएं।
- स्ट्रिंग के रूप में घोषित करें: परिणाम को एक डायनामिक स्ट्रिंग ऐरे में असाइन करें। पहले एक निश्चित आकार घोषित करने से कंपाइल एरर आ जाता है।
- खाली इनपुट: एक खाली स्ट्रिंग को विभाजित करने पर बिना तत्वों वाला एक सरणी प्राप्त होता है, इसलिए आइटम (0) पढ़ने से पहले UBound के साथ परीक्षण करें।
सही फंक्शन चुनने के बावजूद, स्ट्रिंग कोड कुछ निश्चित तरीकों से विफल हो जाता है।
VBA स्ट्रिंग में होने वाली आम त्रुटियाँ और उन्हें ठीक करने के तरीके
एक्सेल वीबीए में स्ट्रिंग संबंधी अधिकांश त्रुटियाँ कुछ ही कारणों से उत्पन्न होती हैं। समस्या के लक्षण को पहचान लेने से लंबे समय तक चलने वाली डीबगिंग प्रक्रिया से बचा जा सकता है।
- संयोजन में प्रकार का बेमेल: टेक्स्ट और संख्या के बीच प्लस चिह्न का उपयोग किया गया था। इसे एम्परसैंड (+) चिह्न से बदलें, जिससे संख्या स्वतः परिवर्तित हो जाएगी।
- InStr 0 लौटाता है: सबस्ट्रिंग नहीं मिली। InStr विफलता पर -1 के बजाय 0 लौटाता है, इसलिए परिणाम को Mid में भेजने से पहले शून्य से अधिक मान की जाँच करें।
- मिड या लेफ्ट में अमान्य प्रक्रिया कॉल: अनुरोधित लंबाई ऋणात्मक है, या प्रारंभिक स्थिति 1 से कम है। कॉल को लेन से सुरक्षित करें ताकि लंबाई कभी भी स्ट्रिंग से अधिक न हो।
- ऐसी तुलनाएँ जो मेल खानी चाहिए लेकिन मेल नहीं खातीं: आयातित डेटा में अंत में आने वाले रिक्त स्थान समानता को भंग कर देते हैं। दोनों पक्षों को Trim में लपेटें, और जब केस को अनदेखा करना हो तो StrComp का उपयोग करें।
- वह पाठ जो संख्या में परिवर्तित नहीं होगा: “1,200” जैसे मान विभाजक के कारण अंकगणितीय गणना में विफल हो जाते हैं। CLng का उपयोग करके परिवर्तित करने से पहले Replace का उपयोग करके इसे हटा दें।
उपरोक्त कोड युक्त Excel डाउनलोड करें
ऊपर दी गई एक्सेल फ़ाइल डाउनलोड करें Code


