أساسيات VBA إكسل : استعمالات الجداول في VBA الجزء الأول
في هذه التدوينة سنكتشف استعمالات الجداول في VBA وستكون عبارة عن جزئين.
الجداول
تسمح لنا الجداول بتخزين عدد كبير من القيم على عكس المتغيرات التي يمكن أن تخزن قيمة
واحدة فقط في كل مرة.
لقد تطرقنا إلى الموضوع في درس المتغيرات ، والآن سنكتشف امورا أعمق من ذالك.
الفائدة من الجداول
مثلا أنت تحتاج لإجراء ما لتخزين 500 قيمة. إذا كان عليك إنشاء 500 متغير
لتخزين كل هذه القيم ، فسيصبح الأمر معقدًا للغاية بسرعة ، بينما مع الجداول ،
سيتم تبسيط تخزين هذه القيم واستخدامها بشكل كبير.
الميزة الثانية هي سرعة التنفيذ.
لكي نفهم أكثر سنرى مثالا :
تحتوي الورقة
الأولى على قاعدة بيانات من 5000 صف من 3 أعمدة:
تحتوي الورقة
الثانية على شبكة حيث يكون ملف OUI حسب السنوات والعملاء:
في هذا المثال ، سينتقل الإجراء عبر قاعدة البيانات وسيحسب لكل عام ورقم كل عميل عدد نعم قبل إدخاله في الخلية المقابلة.
بدون استخدام جدول ، سيستغرق 171.11 ثانية في الاكسيل لتنفيذ الإجراء:
اذا قمنا بحفظ قاعدة البيانات أولاً في الجدول ثم إجراء نفس العمليات الحسابية ، سيستغرق تشغيل الإجراء 1.67 ثانية فقط :
وإذا قررنا تحسين الإجراء من خلال تسجيل البيانات فقط بامتداد نعم في الجدول وسنوات التواريخ فقط ، 0.58 ثانية كافية:
في هذا المثال ، أدى استخدام الجدول إلى جعل الإجراء أسرع بنحو 295 مرة .
إعلان الجدول في VBA
فيما يلي بعض نماذج العبارات :
'Exemple de déclaration d'un tableau à 1 dimension Dim tab1(4) 'Exemple de déclaration d'un tableau à 2 dimensions Dim tab2(6, 1) 'Exemple de déclaration d'un tableau dynamique Dim tab3()
إذا لم تتمكن من إدخال قيم ثابتة ، فاترك الأقواس فارغة.
لا تحتاج إلى التصريح عن نوع (سلسلة ، عدد صحيح ، إلخ) لأنه في كثير من الحالات سيؤدي ذلك إلى إبطاء الإجراء الخاص بك.
حفظ البيانات في جدول
لنبدأ بتسجيل هذه البيانات القليلة في جدول:
نريد تسجيل قيم 11 × 1 هنا ، لذلك علينا أن نعلن عن مصفوفة أحادية البعد:
Dim tableau(10)
الجدول tableau(10) يمكن أن يحتوي على 11 قيمة ، اذا تذكرتم أن ترقيم الجدول يبدأ من 0.
ثم يتلقى كل عنصر من عناصر الجدول قيمته:
End Sub
ولتجنب كل هذه التكرارات ، استخدم حلقة For:
Sub exemple() Dim tableau(10), i As Integer 'Enregistrement des valeurs dans le tableau For i = 0 To 10 tableau(i) = Range("A" & i + 2) Next End Sub
لاحظ أنه يمكنك استخدام وتعديل كل عنصر من عناصر المصفوفة على حدة كمتغير.
هنا مثال مع tableau(3) القيمة الرابعة من الجدول:
Sub exemple() Dim tableau(10), i As Integer 'Enregistrement des valeurs dans le tableau For i = 0 To 10 tableau(i) = Range("A" & i + 2) Next 'Affichage 1 MsgBox tableau(3) 'Renvoie : 08.03.2023 'Modification de l'une des valeurs tableau(3) = Year(tableau(3)) 'Affichage 2 MsgBox tableau(3) 'Renvoie : 2023 End Sub