यह ट्यूटोरियल VBA एरर 1004- एप्लिकेशन-डिफ़ाइंड या ऑब्जेक्ट-डिफ़ाइंड एरर की व्याख्या करेगा।
VBA रन टाइम एरर 1004 को एप्लिकेशन-डिफाइंड या ऑब्जेक्ट-डिफाइंड एरर के रूप में जाना जाता है जो कोड के चलने के दौरान होता है। कोडिंग त्रुटियां करना (हमारी एरर हैंडलिंग गाइड देखें) VBA सीखने का हिस्सा है, लेकिन यह जानना कि त्रुटि क्यों होती है, आपको भविष्य की कोडिंग में त्रुटियां करने से बचने में मदद करती है।
VBA त्रुटि 1004 - वस्तु मौजूद नहीं है
अगर हम अपने कोड में किसी ऑब्जेक्ट का जिक्र कर रहे हैं जैसे कि एक रेंज नाम जिसे परिभाषित नहीं किया गया है, तो यह त्रुटि हो सकती है क्योंकि वीबीए कोड नाम खोजने में असमर्थ होगा।
12345678 | उप कॉपीरेंज ()मंद कॉपीसे रेंज के रूप मेंमंद कॉपीटू रेंज के रूप मेंकॉपीफ्रॉम सेट करें = शीट्स (1)। रेंज ("कॉपीफ्रॉम")कॉपीटो सेट करें = शीट्स (1)। रेंज ("कॉपीटो")कॉपीफ्रॉम.कॉपीCopyTo.PasteSpecial xlPasteValuesअंत उप |
उपरोक्त उदाहरण नामित श्रेणी "CopyFrom" से नामित श्रेणी "CopyTo" में मानों की प्रतिलिपि बना देगा - इस शर्त पर कि ये मौजूदा नामित श्रेणियां हैं! यदि वे मौजूद नहीं हैं, तो त्रुटि 1004 प्रदर्शित होगी।
ऊपर दिए गए उदाहरण में इस त्रुटि से बचने का सबसे आसान तरीका एक्सेल वर्कबुक में श्रेणी नाम बनाना है, या पारंपरिक पंक्ति और कॉलम प्रारूप में श्रेणी का संदर्भ लेना है जैसे: रेंज ("ए 1: ए 10").
VBA त्रुटि 1004 - नाम पहले ही लिया जा चुका है
त्रुटि तब भी हो सकती है जब आप किसी ऑब्जेक्ट का नाम बदलने का प्रयास कर रहे हैं जो पहले से मौजूद है - उदाहरण के लिए यदि हम शीट 1 का नाम बदलने का प्रयास कर रहे हैं लेकिन आप जो नाम शीट दे रहे हैं वह पहले से ही किसी अन्य शीट का नाम है।
123 | उप नाम वर्कशीट ()ActiveSheet.Name = "शीट2"अंत उप |
यदि हमारे पास पहले से ही शीट 2 है, तो त्रुटि होगी।
VBA त्रुटि 1004 - किसी वस्तु को गलत तरीके से संदर्भित करना
त्रुटि तब भी हो सकती है जब आपने अपने कोड में किसी ऑब्जेक्ट का गलत संदर्भ दिया हो। उदाहरण के लिए:
12345678 | उप कॉपीरेंज ()मंद कॉपीसे रेंज के रूप मेंडिम कॉपीटू रेंज के रूप मेंकॉपीफ्रॉम सेट करें = रेंज ("ए 1: ए 10")कॉपीटो = रेंज सेट करें ("सी 1: सी 10")रेंज (कॉपीफ्रॉम)। कॉपी करेंरेंज (कॉपी टू)। पेस्ट स्पेशल xlPasteValuesअंत उप |
यह एक बार फिर हमें त्रुटि 10004 देगा
कोड को ठीक करें, और त्रुटि अब दिखाई नहीं देगी।
12345678 | उप कॉपीरेंज ()मंद कॉपीसे रेंज के रूप मेंडिम कॉपीटू रेंज के रूप मेंकॉपीफ्रॉम सेट करें = रेंज ("ए 1: ए 10")कॉपीटो = रेंज सेट करें ("सी 1: सी 10")कॉपीफ्रॉम.कॉपीCopyTo.PasteSpecial xlPasteValuesअंत उप |
वीबीए त्रुटि 1004 - वस्तु नहीं मिली
यह त्रुटि तब भी हो सकती है जब हम किसी कार्यपुस्तिका को खोलने का प्रयास कर रहे हों और कार्यपुस्तिका नहीं मिली - इस उदाहरण में कार्यपुस्तिका वह वस्तु है जो नहीं मिली है।
1234 | उप ओपनफाइल ()कार्यपुस्तिका के रूप में मंद wbसेट wb = वर्कबुक। ओपन ("सी: \ डेटा \ टेस्टफाइल। एक्सएलएसएक्स")अंत उप |
हालांकि त्रुटि बॉक्स में संदेश अलग होगा, फिर भी त्रुटि 1004 है।