क्या "उपकरण" कीवर्ड के साथ कंपाइलर सशर्त स्थिरांक का उपयोग करना संभव है, जहां इंटरफ़ेस एक ऐड-इन में है?वीबीए: उपकरण के साथ सशर्त संकलन कीवर्ड
मैं अपने कार्यपुस्तिका में एक वर्ग मॉड्यूल में निम्नलिखित है, चलो यह Book1 कॉल:
#Const Condition1 = 0 ''will be replaced with 1 when add-in is opened
#if Condition1 then
Implements myAddIn.iInterfaceFoo
#End if
मैं ऐड-इन के लिए एक संदर्भ के रूप में सूचीबद्ध myAddIn है (यानी उपकरण में -> संदर्भ .. ।)।
मैं ऐड-इन में अन्य कक्षाओं के साथ इंटरफ़ेस का सफलतापूर्वक उपयोग कर रहा हूं, लेकिन अब मैं सीधे अपनी कार्यपुस्तिका पुस्तक 1 में इंटरफ़ेस को कॉल करना चाहता हूं। जब तक ऐड-इन खुला होता है, जब मैं book1 संकलित करता हूं (यानी डीबग -> संकलित VBAProject) यह सफलतापूर्वक संकलित करता है।
हालांकि, जब मैं के साथ ऐड-इन को बंद कर दिया, मैं त्रुटि
Compile error: User-defined type not defined
मिल Book1 संकलित करने के लिए कोशिश यह ठीक है कि मैं क्या से बचने के लिए कोशिश कर रहा हूँ - अन्यथा यदि ऐड-इन याद आ रही है (उदाहरण के लिए किसी और के कंप्यूटर पर) स्प्रेडशीट स्वयं भी काम करेगी।
धन्यवाद, मैं प्रश्न में सुधार करने का प्रयास किया है। मैंने कक्षा को तुरंत चालू कर दिया है, लेकिन यह एक कंपाइलर त्रुटि है जो रनटाइम त्रुटि नहीं है। 'उपकरण' पर दिए गए लिंक के लिए धन्यवाद लेकिन मैं यह कैसे काम करता हूं के साथ काफी सहज हूं :) – crunch
ठीक है, जब 'कंडीशन 1' गलत है तो आपके कोड को 'myAddIn.iInterfaceFoo' लागू करने का भी प्रयास नहीं करना चाहिए। क्या आपको 'कंडीशन 1' को सही/गलत पर सेट करने में कोई समस्या है, चाहे ऐड-इन लोड हो या नहीं? संभवतः [यह] देखें (http://stackoverflow.com/q/15951518/2140173) और [वह] (http://stackoverflow.com/q/19726791/2140173) –
यह बस है - यह संकलन करने का प्रयास करता है 'कार्यान्वयन' रेखा, भले ही 'कंडीशन 1' 'गलत 'है। मैं उन लिंक किए गए उत्तरों पर एक नज़र डालेगा। – crunch