جدول المحتويات
المصفوفة هي متغير يحتفظ بنفس أنواع البيانات. إذا كان هناك صف واحد فقط أو عمود واحد من البيانات ، فإنه يُعرف بالصفيف أحادي البعد. ومع ذلك ، عندما يكون هناك أكثر من صف وعمود ، يطلق عليه صفيف ثنائي الأبعاد. نستخدم ReDim لتغيير حجم مصفوفة في VBA. بالإضافة إلى ذلك ، نستخدم الحفاظ على الكلمة الأساسية مع ReDim للحفاظ على البيانات القديمة سليمة. ستعرض لك هذه المقالة 2 طرقًا سريعة لـ " ReDim Preserve " a 2D array في Excel VBA .
تنزيل المصنف التدريبي
ماكرو لـ ReDim Preserve 2D.xlsm
2 طرق مفيدة ReDim Preserve 2D Array في Excel VBA
هذه هي مجموعة البيانات الأساسية التي تم إنشاؤها من صفيف ثنائي الأبعاد بثلاثة صفوف وعمودين. أولاً ، سننشئ هذه المجموعة. بعد ذلك ، سنضيف عمودًا آخر إلى هذه المصفوفة. سنستخدم " ReDim Preserve " للقيام بذلك. بالإضافة إلى ذلك ، سوف نوضح ما يحدث إذا لم نستخدم هذا.
افتراضيًا ، يمكننا فقط تغيير حجم البعد الأخير من المصفوفة (أي الأعمدة أو الحد العلوي). سنقوم بنقل المصفوفة ، ثم نغير البعد الأخير ، ثم نغيرها مرة أخرى لتغيير حجم كلا البعدين للمصفوفة ثنائية الأبعاد في Excel VBA.
1 ReDim Preserve Last Dimension 2D Array
سنقوم أولاً بتعريف المصفوفة ثنائية الأبعاد على أنها ديناميكية. بعد ذلك ، باستخدام العبارة ReDim ، سنقوم بإنشاء ملفصفيف مكون من ثلاثة صفوف وعمودين. أخيرًا ، سنستخدم العبارة ReDim مرة أخرى مع Preserve keyword قم بزيادة الحد الأعلى للمصفوفة ثنائية الأبعاد.
الخطوات:
- لتبدأ ، اضغط على ALT + F11 لإظهار نافذة وحدة VBA . بدلاً من ذلك ، يمكنك القيام بذلك من علامة التبويب Developer ← حدد Visual Basic .
- ثم ، من أدخل علامة التبويب ← حدد الوحدة . سنكتب رمز VBA هنا.
- بعد ذلك ، اكتب الكود التالي في الوحدة النمطية نافذة.
4250
VBA Code Breakdown
- أولاً ، نحن نتصل الإجراء الفرعي “ Redim_Preserve_2D_Array_Row ”.
- ثم نعلن المتغير Our_Array كمصفوفة ديناميكية.
- بعد ذلك ، نحدد حجم المصفوفة. الحد الأدنى هو 3 ، والحد الأعلى هو 2 ، وكلاهما يبدأ من 1 .
- ثم نقوم بتعيين قيم للمصفوفة .
- بعد ذلك ، نقوم بإدخال القيم إلى نطاق الخلايا C6: D8 .
- بعد ذلك ، سوف ينفذ الكود.
- لذا ، احفظ الوحدة الوحدة واضغط تشغيل .
- نتيجة لذلك ، ستعيد القيم إلى نطاقات الخلايا المحددة. يمكننا أن نرى أن " Rachel " موجودة في الصف 1 والعمود 1 موضع ،والتي تم تعريفها على أنها ( 1،1 ) في كود VBA.
- الآن ، سنقوم بتغيير حجم المصفوفة.
- لذا ، أضف هذا إلى الكود السابق وقم بإزالة أول Range.Value statement . علاوة على ذلك ، كيف يبدو الكود كما يمكنك رؤيته من اللقطة أدناه.
7050
- هنا ، قمنا بزيادة الحد الأعلى من ( 1 إلى 2 ) إلى ( 1 إلى 3 ) بواسطة 1 .
- ثم أضفنا القيم إلى المصفوفة
- الآن إذا قمنا بتنفيذ هذا الكود ، فسنرى لم يتم الاحتفاظ بالقيم السابقة. سيعود فارغًا للقيم السابقة.
- الآن ، يمكننا إصلاح ذلك عن طريق إضافة الكلمة الأساسية الاحتفاظ في بيان ReDim .
- أخيرًا ، سيكون الكود الكامل لدينا هو التالي.
3645
- الآن ، إذا كنا قم بتشغيل هذا الرمز ، ثم سيكون الإخراج مثل هذا. وبالتالي ، سنقوم " ReDim Preserve " بالبعد الأخير لصفيف 2D في Excel VBA .. الآن ، ستوضح لك الطريقة التالية كيفية " ReDim الاحتفاظ بـ ”وتغيير حجم كلا بعدي المصفوفة.
اقرأ المزيد: VBA للحصول على فريد القيم من العمود إلى المصفوفة في Excel (3 معايير)
قراءات مماثلة
- كيفية تسمية صفيف الجدول في Excel (باستخدام خطوات سهلة)
- Excel VBA لقراءة ملف CSV في صفيف (4 أمثلة مثالية)
- كيفية تحويل النطاق إلى مصفوفة في ExcelVBA (3 طرق)
- Excel VBA: إزالة التكرارات من مصفوفة (مثالان)
2. ReDim الحفاظ على كلا البعدين مصفوفة ثنائية الأبعاد في Excel VBA
في هذه الطريقة النهائية ، سوف نعرض لك خطوات تغيير الحجم و " ReDim Preserve " 2D array . هنا ، سنستخدم الدالة VBA Transpose لتغيير حجم الحد الأدنى للصفيف. إذا حاولنا تغيير حجم الحد الأدنى للمصفوفة في الطريقة الأولى ، فسنرى الخطأ " منخفض خارج النطاق ". الآن ، دون مزيد من اللغط ، دعونا نرى كيف يمكننا إصلاح هذا وتحقيق هدفنا.
الخطوات:
- أولاً ، كما هو موضح في الطريقة الأولى ، قم بإحضار الوحدة النمطية window.
- ثانيًا ، أضف سطور التعليمات البرمجية التالية إلى الكود الأول.
6685
- علاوة على ذلك ، يبدو رمز الطريقة النهائية على هذا النحو.
9888
تحليل رمز VBA
- أولاً ، نحن نستدعي الإجراء الفرعي “ ReDim_Preserve_2D_Array_Both_Dimensions ” .
- بعد ذلك ، باقي الرموز حتى وظيفة VBA Transpose هي نفسها كما في الكود الأول.
- هنا ، نحن نقوم بنقل المصفوفة.
- ثم نقوم بزيادة الحد الأعلى للمصفوفة.
- بعد ذلك نقوم بنقل المصفوفة مرة أخرى. لذلك ، في النهاية سيغير الحد الأدنى.
- بعد ذلك ، نقوم بإدخال قيم المصفوفة التي تم تغيير حجمها أثناءالحفاظ على البيانات القديمة.
- أخيرًا ، نكتب القيم إلى نطاق الخلايا C6: E9 .
- بعد هذا ، كما هو موضح في الطريقة الأولى ، تشغيل هذا الكود.
- وبالتالي ، يمكننا تصور كيفية احتفاظ الكود بـ المصفوفة ثنائية الأبعاد باستخدام " ReDim Preserve " والوظيفة VBA Transpose .
اقرأ المزيد: VBA لتحويل المصفوفة في Excel (3 طرق)
أشياء يجب تذكرها
- ReDim Preserve لا يمكنها تغيير الحد الأدنى للصفيف. للقيام بذلك ، نحتاج إلى استخدام وظيفة تبديل .
- يمكننا فقط استخدام ReDim على المصفوفات الديناميكية.
الخاتمة
لقد أوضحنا لك طريقتين سريعتين لـ " ReDim Preserve " a 2D array في Excel VBA. إذا واجهت أي مشاكل بخصوص هذه الأساليب أو كان لديك أي ملاحظات لي ، فلا تتردد في التعليق أدناه. علاوة على ذلك ، يمكنك زيارة موقعنا ExcelWIKI لمزيد من المقالات المتعلقة ببرنامج Excel. شكرا على القراءة ، استمر في التميز!