excel vba - Error with Character Replacement VBA Function -


निम्न VBA समारोह पर विचार करें:

  उप RemoveLetters () Application.ScreenUpdating = झूठी मंद str स्ट्रिंग के रूप में: str = "abcdefghijklmnopqrstuvwxyz0123456789" ltr स्ट्रिंग के रूप में मंद 37 मैं = 1 करने के लिए लीटर = मध्य (str, मैं, 1) Sheet9.Range ( "A2: A1800") के लिए। बदलें _ क्या: = लीटर, रिप्लेसमेंट: = "", MatchCase: = झूठी, SearchFormat: = झूठी, ReplaceFormat: = झूठी अगला Application.ScreenUpdating = सच End Sub  

यह समारोह एक दिया स्ट्रिंग में सभी पत्र और नंबर पात्रों में से छुटकारा हो जाता है । हालांकि, मुझे जो त्रुटि मिलती है वह यह है कि जब भी कोई स्ट्रिंग गैर-अक्षरों से शुरू होती है, वह नॉन-स्ट्रिंग स्ट्रिंग जो उस स्ट्रिंग पर निष्पादित करने में विफल रहता है और किसी भी स्ट्रिंग पर निष्पादित नहीं करता है। यही है, ऐसी स्ट्रिंग में चल रहा है निष्पादन को रोकता है। ऐसा क्यों हो रहा है एक स्पष्ट कारण है? मैं इस कोड को कैसे संशोधित कर सकता है इसे ठीक करने?

मिलान पैटर्न के लिए, सबसे अच्छा विकल्प है नियमित अभिव्यक्ति या अधिक सामान्यतः regex के रूप में जाना जाता है। एक निर्धारित पैटर्न को परिभाषित करके, आप जो कुछ भी चाहते हैं, उसे निकालने या बदल सकते हैं।

सभी गैर-नंबर और गैर-अक्षरों के साथ-साथ रिक्त स्थान को बदलने के लिए, निम्न कार्य जैसे छोटे फ़ंक्शन: < / p>

 <कोड> समारोह NoNormalChar (StrTarget स्ट्रिंग के रूप में) स्ट्रिंग मंद oRegEx के रूप में वस्तु के रूप में सेट oRegEx = CreateObject ( "vbscript.regexp") के साथ oRegEx .Pattern = "[एक-zA-Z0-9 \ s] + ".Global = सच NoNormalChar = .Replace (StrTarget," ") समाप्ति समारोह के साथ समाप्त  

एक उप अंदर यह कॉलिंग काफी सरल है:

  रेज सेल के लिए प्रत्येक कक्षा के लिए ("ए 2: ए 1800") रेंज के रूप में डिम आरएनजी रेंज, रेंज एप्लिकेशन के रूप में सेल। स्क्रीन अपडेटिंग = फॉल्ट सेट आरएनजी = शीट 9। रेंज = "सामान्य" = सच अंत उप  

एक एकल मॉड्यूल को कॉपी और पेस्ट करें। एक बैक-अप कॉपी पर चलें और हमें परिणामों का पता करें।


Comments