الملخص
تحتوي هذه المقالة على نموذج إجراءات Microsoft Visual Basic for Applications التي يمكنك استخدامها للعمل مع عدة أنواع من الصفائف.
مزيد من المعلومات
توفر Microsoft أمثلة برمجة للتوضيح فقط، دون ضمان سواء تم التعبير عنه أو تضمينه. وهذا يشمل، على سبيل المثال لا الحصر، الضمانات الضمنية للقابلية التجارية أو اللياقة البدنية لغرض معين. تفترض هذه المقالة أنك على دراية بلغة البرمجة التي يتم توضيحها ومع الأدوات المستخدمة لإنشاء إجراءات وتصحيح الأخطاء. يمكن لمهندسي دعم Microsoft المساعدة في شرح وظائف إجراء معين، لكنهم لن يعدلوا هذه الأمثلة لتوفير وظائف إضافية أو إجراءات بناء لتلبية متطلباتك المحددة. ملاحظة: في إجراءات Visual Basic for Applications، الكلمات بعد الفاصلة العليا (') هي تعليقات.
لتعبئة صفيف ثم نسخه إلى ورقة عمل
-
افتح مصنفا جديدا وأدرج ورقة وحدة Visual Basic.
-
اكتب التعليمات البرمجية التالية في ورقة الوحدة النمطية.
Sub Sheet_Fill_Array() Dim myarray As Variant myarray = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) Range("a1:a10").Value = Application.Transpose(myarray) End Sub
-
حدد ورقة1.
-
في القائمة أدوات، أشر إلى الماكرو ثم انقر فوق وحدات الماكرو.
-
في مربع الحوار ماكرو، انقر فوق Sheet_Fill_Array، ثم انقر فوق تشغيل.
لأخذ القيم من ورقة عمل وتعبئة الصفيف
-
اكتب القيم على Sheet1 في الخلايا A1:A10.
-
في ورقة الوحدة النمطية Visual Basic، اكتب التعليمات البرمجية التالية:
Sub from_sheet_make_array() Dim thisarray As Variant thisarray = Range("a1:a10").Value counter = 1 'looping structure to look at array While counter <= UBound(thisarray) MsgBox thisarray(counter, 1) counter = counter + 1 Wend End Sub
-
حدد ورقة1.
-
في القائمة أدوات، أشر إلى الماكرو ثم انقر فوق وحدات الماكرو.
-
في مربع الحوار ماكرو، انقر فوق from_sheet_make_array، ثم انقر فوق تشغيل.
لتمرير صفيف وتلقيه
-
في ورقة وحدة نمطية، اكتب التعليمات البرمجية التالية:
Sub pass_array() Dim thisarray As Variant thisarray = Selection.Value receive_array (thisarray) End Sub Sub receive_array(thisarray) counter = 1 While counter <= UBound(thisarray) MsgBox thisarray(counter, 1) counter = counter + 1 Wend End Sub
-
حدد Sheet1، وقم بتمييز النطاق A1:A10.
-
في القائمة أدوات، أشر إلى الماكرو ثم انقر فوق وحدات الماكرو.
-
في مربع الحوار ماكرو، انقر فوق pass_array، ثم انقر فوق تشغيل.
لمقارنة صفيفين
-
إنشاء نطاقين مسميين على Sheet1. قم بتسمية نطاق واحد1 والنطاق الآخر 2.
على سبيل المثال، قم بتمييز نطاق الخلايا A1:A10 وسمه range1؛ قم بتمييز نطاق الخلية B1:B10 وسمه range2. -
اكتب التعليمات البرمجية التالية في ورقة الوحدة النمطية.
Sub compare_two_array() Dim thisarray As Variant Dim thatarray As Variant thisarray = Range("range1").Value thatarray = Range("range2").Value counter = 1 While counter <= UBound(thisarray) x = thisarray(counter, 1) y = thatarray(counter, 1) If x = y Then MsgBox "yes" Else MsgBox "no" End If counter = counter + 1 Wend End Sub
-
حدد ورقة2.
-
في القائمة أدوات، أشر إلى ماكرو ثم انقر فوق ماكرو.
-
في مربع الحوار ماكرو، انقر فوق compare_two_array، ثم انقر فوق تشغيل.
سترى مربع رسالة واحد لكل مقارنة.
لتعبئة صفيف ديناميكي
-
في ورقة وحدة نمطية، اكتب التعليمات البرمجية التالية:
Sub fill_array() Dim thisarray As Variant number_of_elements = 3 'number of elements in the array 'must redim below to set size ReDim thisarray(1 To number_of_elements) As Integer 'resizes this size of the array counter = 1 fillmeup = 7 For counter = 1 To number_of_elements thisarray(counter) = fillmeup Next counter counter = 1 'this loop shows what was filled in While counter <= UBound(thisarray) MsgBox thisarray(counter) counter = counter + 1 Wend End Sub
-
في القائمة أدوات، أشر إلى الماكرو ثم انقر فوق وحدات الماكرو.
-
في مربع الحوار ماكرو، انقر فوق fill_array، ثم انقر فوق تشغيل.
ملاحظة: سيؤدي تغيير المتغير "number_of_elements" إلى تحديد حجم الصفيف.