كيفية الحصول على طول المصفوفة باستخدام vba؟
في VBA، الحصول على طول المصفوفة يعني حساب عدد العناصر الموجودة في تلك المصفوفة. ولهذا عليك أن تعرف العنصر الأدنى والعنصر الأعلى. للحصول على ذلك، يمكنك استخدام الدالتين UBOUND و LBOUND اللتين ترجعان الحد الأعلى والحد الأدنى على التوالي.
وبصرف النظر عن هذا، يمكنك أيضًا استخدام COUNTA وهي وظيفة جدول بيانات. وفي هذا البرنامج التعليمي سنرى كلتا الطريقتين حتى تتمكن من استخدام أي منهما حسب ما يناسبك.
خطوات الحصول على حجم المصفوفة
لدينا هنا جدول يحتوي على قائمة الأشهر وكمية المبيعات لكل شهر.
- تأكد من أن لديك جدولًا تم تعريفه بشكل صحيح ويحتوي على صفوف وأعمدة.
- بعد ذلك، هناك متغيرين آخرين (لأن لدينا مصفوفة ثنائية الأبعاد) لتخزين حدود المصفوفة.
- ثم تحتاج إلى استخدام صيغة تحتاج فيها إلى استخدام الدالة Ubound للحصول على الحد الأعلى ثم Lbound للحصول على الحد الأدنى للصفيف.
- نظرًا لأن لديك مصفوفة ثنائية الأبعاد، فيجب أن يكون كلاكما مرتبطًا بالأبعاد وتعيين هذه القيمة على المتغيرات.
- في النهاية، اضرب الأطوال التي حصلت عليها من Ubound وLbound كحد أعلى وأدنى.
هنا هو الرمز الكامل.
Dim yearSales(1 To 12, 1 To 2) As Integer Dim iCount1 As Integer, iCount2 As Integer iCount1 = UBound(yearSales, 1) - LBound(yearSales, 1) + 1 iCount2 = UBound(yearSales, 2) - LBound(yearSales, 2) + 1 MsgBox iCount1 * iCount2
ملحوظة: لا بد أنك تتساءل عما إذا كان لدينا إجمالي 13 صفًا في الجدول الذي شاركته معك في بداية المقال.
لكننا استخدمنا جدولًا مكونًا من 13 صفًا لأن الصف الأول كان عبارة عن عنوان. وهنا استخدمنا دالة IF STATEMENT وISEMPTY للتحقق مما إذا كانت المصفوفة المعلنة لا تحتوي على أي عناصر.
Dim yearSales(1 To 12, 1 To 2) As Integer Dim iCount1 As Integer, iCount2 As Integer If IsEmpty(yearSales) = 0 Then MsgBox "This array has zero elements." Else iCount1 = UBound(yearSales, 1) - LBound(yearSales, 1) + 1 iCount2 = UBound(yearSales, 2) - LBound(yearSales, 2) + 1 MsgBox "This array has " & iCount1 * iCount2 & " element(s)."
استخدام COUNTA للحصول على طول المصفوفة
كما تعلم، المصفوفة عبارة عن مجموعة من العناصر المبنية بطريقة أحادية البعد أو متعددة الأبعاد ويمكنك استخدام الدالة COUNTA ( وظيفة جدول البيانات ) لحساب هذه العناصر دفعة واحدة.
في التعليمة البرمجية التالية، استخدمت نفس المصفوفة التي أعلنتها سابقًا ثم استخدمت متغيرًا لتخزين عدد العناصر التي أرجعتها الدالة.
وكما ترون، النتيجة التي تم إرجاعها هي 24، وهو إجمالي عدد العناصر الموجودة في المصفوفة.
Dim yearSales(1 To 12, 1 To 2) As Integer iCount = WorksheetFunction.CountA(yearSales) MsgBox iCount
هناك شيء واحد عليك الاهتمام به، وهو أن هذه الطريقة لن تكون مثالية للاستخدام في كل موقف، لذلك من الجيد دائمًا استخدام الطريقة التي ناقشناها سابقًا.
يمكنك أيضًا كتابة التعليمات البرمجية للتحقق أولاً مما إذا كانت المصفوفة المعلنة ليست فارغة.
Dim yearSales(1 To 12, 1 To 2) As Integer If IsEmpty(yearSales) = 0 Then MsgBox "This array has zero elements." Else iCount = WorksheetFunction.CountA(yearSales) MsgBox "This array has " & iCount & " element(s)."
تعرف على المزيد حول جداول VBA
- VBA إضافة قيمة جديدة إلى المصفوفة
- مجموعة VBA مع سلاسل
- مسح مصفوفة VBA
- الجدول الديناميكي VBA