في الدرس السابق ، نظرنا إلى المتغيرات التي يمكن كتابة بيانات معينة فيها ، لكن لا يمكن أن تحتوي على أكثر من قيمة واحدة. للتغلب على هذا القيد ، توجد مصفوفات في VBA يمكنها تخزين قيم متعددة.
فيما يلي بعض الأمثلة على المصفوفات المختلفة:
Sub variables() 'مثال على التصريح عن متغير Dim var1 As String 'مثال على إعلان مصفوفة ذات بعد واحد Dim array1(4) As String 'مثال على إعلان مصفوفة ثنائية الأبعاد Dim array2(4, 3) As String 'مثال على إعلان مصفوفة ثلاثية الأبعاد Dim array3(4, 3, 2) As String End Sub
Dim array1(4) As String
يمكن اعتبار المصفوفة أحادية البعد كجدول يتكون من عمود واحد. المصفوفة 1 (4) هي مصفوفة ذات بعد واحد يمكن أن تحتوي على 5 سجلات. لماذا 5؟ لأن أعداد السجلات في الصفيف تبدأ من صفر (0 ، 1 ، 2 ، 3 ، 4).
الآن دعنا نفكر في مصفوفة ثنائية الأبعاد:
Dim array2(4, 3) As String
سيبدو بالفعل كجدول مكون من 5 صفوف و 4 أعمدة:
"تعيين قيم للخلايا الملونة array2(0, 0) = "القيمة في الخلية الحمراء" array2(4, 1) = "القيمة في الخلية الخضراء" array2(2, 3) = "القيمة في الخلية الزرقاء"
مثل المتغيرات ، يمكن استخدام الثوابت لتخزين القيم ، لكن الاختلاف هو أن القيم لا يمكن أن تتغير. يمكننا إضافة ثابت لتجنب تكرار القيمة ، على سبيل المثال 13.14:
Sub const_example() Cells(1, 1) = Cells(1, 2) * 13.14 Cells(2, 1) = Cells(2, 2) * 13.14 Cells(3, 1) = Cells(3, 2) * 13.14 Cells(4, 1) = Cells(4, 2) * 13.14 Cells(5, 1) = Cells(5, 2) * 13.14 End Sub
هذا يجعل الكود أسهل للفهم والتحرير. كما يسمح لك بتغيير قيمة الثابت بكل بساطة:
Sub const_example() 'إعلان ثابت + إسناد قيمة Const ANNUAL_RATE As Double = 13.14 Cells(1, 1) = Cells(1, 2) * ANNUAL_RATE Cells(2, 1) = Cells(2, 2) * ANNUAL_RATE Cells(3, 1) = Cells(3, 2) * ANNUAL_RATE Cells(4, 1) = Cells(4, 2) * ANNUAL_RATE Cells(5, 1) = Cells(5, 2) * ANNUAL_RATE End Sub
نطاق المتغيرات
إذا تم الإعلان عن متغير في بداية الإجراء (Sub) ، فيمكن استخدامه فقط في هذا الإجراء. لن تكون قيمة المتغير متاحة بعد تنفيذ الإجراء.
Sub procedure1() Dim var1 As Integer '=> المتغير صالح فقط في هذا الإجراء End Sub Sub procedure2() '=> لا يمكن استخدام var1 هنا End Sub
من أجل استخدام متغير في أي إجراء وحدة نمطية ، نحتاج فقط إلى الإعلان عنه في بداية الوحدة. وإذا قمت بتعريف متغير مثل هذا ، فسيكون متاحًا حتى يتم إغلاق المصنف.
Dim var1 As Integer Sub procedure1() '=> يمكن استخدام var1 هنا End Sub Sub procedure2() '=> يمكن أيضًا استخدام var1 هنا End Sub
إذا كنت تريد استخدام نفس المتغير في جميع وحدات الكتاب ، فعليك فقط استبدال Dim بـ Global في المثال السابق:
Global var1 As Integer
لاستخدام متغير بعد تنفيذ الإجراء الذي يظهر فيه ، استبدل Dim بـ Static:
Sub procedure1() Static var1 As Integer End Sub
لاستخدام قيم جميع المتغيرات في الإجراء ، أضف Static قبل Sub:
Static Sub procedure1() Dim var1 As Integer End Sub
فيما يلي مثال سريع لكيفية إنشاء نوع خاص بك:
'إنشاء نوع متغير Type customers last_name As String first_name As String End Type Sub variables() 'إعلان متغير Dim cust1 As customers 'تعيين قيمة إلى cust1 cust1.last_name = "Smith" cust1.first_name = "John" 'مثال على الاستخدام MsgBox cust1.last_name & " " & cust1.first_name End Sub