हममम ... वाक्य रचना कानूनी लग रहा है मेरे सामने वीबीए के बिना पर्याप्त। क्या मैं सही हूं कि आपकी समस्या यह है कि आपका कोड "संकलित" करता है और त्रुटि उत्पन्न किए बिना निष्पादित करता है, लेकिन संग्रह में सरणी कभी नहीं बदली जाती है? यदि ऐसा है, तो मुझे लगता है कि ऐसा इसलिए है क्योंकि आपका एआईटीम (1) संग्रह में संग्रहीत सरणी के प्रति को वापस कर सकता है। फिर आप चुने गए तत्व को ठीक से एक्सेस और संशोधित करते हैं, लेकिन इसका प्रभाव आपके पास नहीं है क्योंकि यह गलत सरणी उदाहरण है।
सामान्य वीबीए संग्रह सामान्य वस्तुओं में संग्रह करते समय सबसे अच्छा काम करते हैं। फिर वे काम करेंगे जैसे आप चाहते हैं क्योंकि वे संदर्भ संग्रह करते हैं। वे मूल्यों को संग्रहित करने के लिए ठीक हैं, लेकिन मुझे लगता है कि वे हमेशा उन्हें कॉपी करते हैं, यहां तक कि "बड़े" जैसे सरणी प्रकार, जिसका अर्थ है कि आप संग्रहीत सरणी की सामग्री को म्यूट नहीं कर सकते हैं।
इस उत्तर पर विचार करें जब तक कि अंतर्निहित COM सामानों को बेहतर तरीके से पता न हो। उम ... पेजिंग जोएल स्पॉस्की?
संपादित करें: एक्सेल वीबीए में इसे आजमाने के बाद, मुझे लगता है कि मैं सही हूं। संग्रह में एक सरणी संस्करण डालने से एक प्रतिलिपि होती है, और इसलिए एक बाहर निकलता है। इसलिए आपने जो वास्तव में पूछा है उसे कोड करने का एक सीधा तरीका प्रतीत नहीं होता है।
यह क्या आप वास्तव में चाहते हैं एक 3-डी सरणी है की तरह लग रहा है, लेकिन तथ्य यह है कि आप पहली बार आयाम के लिए एक संग्रह का उपयोग करने के tyring रहे थे मतलब है कि आपको लगता है कि आयाम में यह के आकार को बदलने में सक्षम होना चाहता हूँ। वीबीए आपको केवल सरणी के अंतिम आयाम के आकार को बदलने देगा (मदद में "redim संरक्षित" देखें)। आप अपने 2-डी सरणियों एक 1-डी सरणी है कि आप का आकार बदल सकते हैं अंदर, हालांकि रख सकते हैं:
ReDim a(5)
Dim b(2, 2)
a(2) = b
a(2)(1, 1) = 42
ReDim Preserve a(6)
ध्यान दें कि एक ReDim साथ घोषित किया जाता है, इस मामले में मंद नहीं।
अंत में, यह काफी संभव है कि जो कुछ भी आप करने की कोशिश कर रहे हैं, उसके लिए कुछ अन्य दृष्टिकोण बेहतर होगा। बढ़ने योग्य, परिवर्तनीय 3-डी सरणी कम से कम कहने के लिए जटिल और त्रुटि-प्रवण हैं।
मुझे नहीं लगता कि Arr2 (1, 1) = 11 वास्तव में संग्रह में सरणी बदलता है। मेरा संपादित उत्तर देखें, लेकिन ऐसा लगता है कि संग्रह से जोड़ने और पढ़ने के दौरान वीबीए सरणी की एक प्रति बनाता है। – jtolle
शायद मैं सिर्फ आपकी टिप्पणी से गुमराह हूं? वह पंक्ति Arr2 को बदलती है, लेकिन संग्रह में संग्रहीत सरणी नहीं है। मैं इसे एआर 2 बदल रहा हूं, लेकिन एआईटीम (1) नहीं, जो एएड (एआर 2) द्वारा बनाई गई एआर 2 की एक प्रति है। – jtolle
@jtolle: क्षमा करें, मैंने अभी पुनः जांच की है और आप बिल्कुल सही हैं। मैं उपरोक्त कोड अपडेट करूंगा। यह संग्रह में Arr2 की एक प्रति है। –