Declan_K यह कहने में सही है कि ए) आप सही कर रहे हैं, और बी) स्थानीय खिड़की गुंजाइश को अनदेखा करती है और उन्हें वैसे भी दिखाती है।
उन्हें बाहर अलग और एक सार्वजनिक संपत्ति और और एक निजी सदस्य क्षेत्र के लिए कारण है कि यह अच्छा है करने के लिए एक छोटे से जोड़ने के लिए:
1) आप उपयोगी सीमित 'तर्क' प्राप्त में हो सकता है/सेट/ दें। शायद आप मान को एक अलग प्रारूप में स्टोर करना चाहते हैं लेकिन हमेशा इसे दूसरे में प्रस्तुत करें (उदा। इसे लंबे समय तक मिलीसेकंड के रूप में स्टोर करें लेकिन हमेशा डबल सेकेंड में वापस आएं), या शायद आप इसे संग्रहीत करने से पहले डेटा को सत्यापित करना चाहते हैं।
2) आप एक सार्वजनिक 'इंटरफ़ेस' परिभाषित करते हैं जो आपके वर्ग और उपभोग कक्षाओं के बीच अनुबंध का प्रतिनिधित्व करता है। इसलिए आप अपनी कक्षा के आंतरिक लोगों के बीच स्पष्ट अंतर बनाते हैं, जो फिट बैठते हैं, और बाहरी इंटरफेस के रूप में बदलने के लिए स्वतंत्र होते हैं। यह वीबीए में अभ्यास में कोई मुद्दा नहीं हो सकता है, क्योंकि आप पूरी तरह से उपभोग करने वाले वर्गों के नियंत्रण में हैं, और वीबीए मांग पर संकलन कर रहे हैं, इसलिए यह गुणों के लिए फ़ील्ड बदलने में कोई समस्या नहीं है और इसके विपरीत, लेकिन यह अच्छी प्रथा है और बेहतर encapsulation लागू करने में मदद करें। यह आपको याद रखने में भी मदद करेगा जब आपको यह सुनिश्चित करने की ज़रूरत है कि आप अपने एडिन/प्रोग्राम में कहीं और ब्रेकिंग बदलाव नहीं कर रहे हैं!
3) गुण मूल रूप से परिवर्तनीय के लिए अतिरिक्त संग्रहण स्थान नहीं लेते हैं। सार्वजनिक क्षेत्र और निजी बैकिंग फ़ील्ड वाली संपत्ति के मामले में भंडारण आवश्यकताओं मूल रूप से वही हैं। यदि यह आपकी मदद करता है, तो इसे 'फ़ंक्शन' के रूप में सोचें जो निजी मूल्य या 'उप' देता है जो निजी मान सेट करता है।
4) आप वास्तव में कुछ मामलों में संसाधनों को बचा सकते हैं: ऐसी कक्षा पर विचार करें जिसमें ऑब्जेक्ट्स लौटाएं (जैसे "परिणाम" संग्रह या कुछ)। आप बैकिंग फ़ील्ड्स को तब तक कुछ भी नहीं रख सकते जब तक ऑब्जेक्ट की वास्तव में आवश्यकता न हो, या तो आपकी कक्षा में या किसी उपभोक्ता के माध्यम से किसी संपत्ति के माध्यम से अनुरोध करने के माध्यम से। जब अनुरोध किया जाता है, तो आप वस्तु को तत्काल आवश्यक कर सकते हैं।
5) सेटर और Accessor के लिए अलग गुंजाइश: फील्ड्स या तो निजी हैं या सार्वजनिक कर रहे हैं और यदि ऐसा है तो यह जनता के आप नहीं रोका जा सकता है, उदाहरण के लिए, एक क्षेत्र या एक नया उद्देश्य यह है कि हो सकता है संदर्भित करने के लिए किया जा रहा है नहीं हो सकता राज्य के साथ असंगत रहें जो आपकी कक्षा की अपेक्षा करता है। दूसरी ओर, आप सीमित कर सकते हैं एक संपत्ति केवल पढ़ने के लिए किया जाना है आदि (ध्यान दें कि यह यह गुण बदल गया है होने से केवल पढ़ने के लिए वस्तु बंद नहीं होगा - यह केवल परिवर्तित करने से संदर्भ रोकता है)। फिर, प्रति बिंदु 2 के रूप में, यह नहीं एक मुद्दा बिल्कुल आप के लिए के रूप में यह, सब के बाद अपनी परियोजना और केवल VBA के भीतर है हो सकता है, लेकिन यह है कि अपने वर्ग के गुण (हारने अर्थ में) कि अभिन्न अंग हैं सुनिश्चित करने के लिए मदद करनी चाहिए आपकी कक्षा की विशेषताएं आपकी कक्षा द्वारा नियंत्रित की जाती हैं।
6) अन्य भाषाओं में अन्य कारणों से बहुत सारे हैं, लेकिन VBA करता है, यह सच है, कम है।
दूसरी ओर, ऐसा कुछ दर्द है जो आपको उपयोगी हो सकता है या नहीं मिल सकता है!
+1 अच्छा सवाल और कुछ मैं के बारे में उत्सुक है, भी किया गया है। मैंने पाया कि सभी उदाहरण (और मैंने जो कार्यान्वित किया है) आपके कोड को दर्पण करते हैं। मुझे संदेह है कि यह चीजों की प्रकृति है और सही है, लेकिन यह स्थानीय खिड़की में कुछ उलझन में है। –