सभी,रन-टाइम त्रुटि '9': सीमा से बाहर सबस्क्रिप्ट - केवल जब एक्सेल VBE बंद कर दिया है
मैं एक त्रुटि एक एक्सेल मैक्रो में मौजूद कुछ VBA कोड के साथ सामना करना पड़ रहा है।
- आधारित कक्षों की श्रेणी मैं एक मॉड्यूल है कि एक नए कार्यपत्रक बनाने के लिए कोड, प्रारूप चलाता है यह और मूल्यों का एक समूह यह एक ही मॉड्यूल के भीतर
- में जोड़ने, मैं निर्धारित: यहाँ कार्यप्रवाह मैं प्रयास कर रहा है आखिरी पंक्ति पर आबादी (जो पिछले चरणों के आधार पर हमेशा अलग रहेगी)
एक बार जब मैं इस श्रेणी को जानता हूं, तो मैं नव निर्मित वर्कशीट कोडमोड्यूल को लिखने के लिए नीचे दिए गए कोड का उपयोग करता हूं ताकि मैं 'change_event' सेट कर सकूं। मैं केवल change_event जब सीमा मैं सिर्फ निर्धारित में मान बदल रहे हैं ट्रिगर करना चाहते हैं: `
Dim Startline As Long Startline = 1 Dim x As Integer x = Errors.Count - 1 Dim rng As Range Set rng = Range("D" & LastRow - x & ":" & "D" & LastRow) With ThisWorkbook.VBProject.VBComponents(VRS.CodeName).CodeModule Startline = .CreateEventProc("Change", "Worksheet") + 1 .InsertLines Startline, "Dim rng As Range " Startline = Startline + 1 .InsertLines Startline, "Set rng = Range(" & """" & CStr(rng.Address) & """" & ")" Startline = Startline + 1 .InsertLines Startline, "If Target.Count > 1 Then Exit Sub" Startline = Startline + 1 .InsertLines Startline, "If Intersect(Target, rng) Is Nothing Then Exit Sub" Startline = Startline + 1 .InsertLines Startline, "MsgBox (""Value Changed!..."") " End With
कोड काम करता है, और लिखते हैं निर्दिष्ट कार्यपत्रक के codemodule में निम्नलिखित:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Set rng = Range("D58:D62")
If Target.Count > 1 Then Exit Sub
If Intersect(Target, rng) Is Nothing Then Exit Sub
MsgBox ("Value Changed!...")
End Sub`
यह कोड भी काम करता है, और संदेश बॉक्स तब प्रकट होता है जब सीमा में कक्ष बदल जाते हैं। हालांकि, VBE साथ बंद कर दिया यह त्रुटि उत्पन्न करेगा:
Run-time error '9': Subscript out of range
साधते डिबग मुझे लाइन पर ले जाता है:
With ThisWorkbook.VBProject.VBComponents(WS.CodeName).CodeModule
लेकिन यह वास्तव में निम्न पंक्ति पर त्रुटि फेंकता है:
Startline = .CreateEventProc("Change", "Worksheet") + 1
ठीक है, इसलिए मैंने निर्दिष्ट वर्कशीट से सभी कोड को हटाने के लिए कोड को संशोधित किया और हर बार ताजा हटाने और लिखने के बजाय पुनः लिखना। यह त्रुटि को पॉप-अप करने से रोकता है, लेकिन इसके बजाय VBE को स्वचालित रूप से खोलता है .... मैं वीबीई को बंद करने के लिए नीचे दी गई रेखा का उपयोग करता हूं ... हालांकि बहुत चिकना नहीं है। मैं एक और अधिक सुन्दर समाधान के लिए खुला हूं: एप्लिकेशन.वीबीई.माइनविंडो। दृश्यमान = झूठा – gg7aph
[वीबीए बदलते शीट कोडनाम रन-टाइम त्रुटि 9: संभावित सीमा से बाहर निकलने का संभावित डुप्लिकेट] (http://stackoverflow.com/questions/ 41022319/VBA बदलते पत्र-कोडनेम-रन-टाइम त्रुटि-9-सबस्क्रिप्ट-बाहर के रेंज) – ThunderFrame