على الرغم Excel تتضمن العديد من دالات ورقة العمل المضمنة، فمن احتمال عدم وجود دالة لكل نوع من العمليات الحسابية التي تقوم بتنفيذها. لم يتمكن مصممو Excel من توقع احتياجات كل مستخدم حسابية. بدلا من Excel، توفر لك هذه الدالات إمكانية إنشاء دالات مخصصة، والتي تم شرحها في هذه المقالة.

تستخدم الدالات المخصصة، مثل وحدات الماكرو، لغة Visual Basic for Applications (VBA). وهي تختلف عن وحدات الماكرو من خلال طريقتين مهمتين. فهي تستخدم أولا إجراءات الدالة بدلا من الإجراءات الفرعية. أي أنها تبدأ ببيان دالة بدلا من العبارة Sub وتنتهي ب End Function بدلا من End Sub. ثانيا، أنهم ينفذون عمليات حسابية بدلا من اتخاذ إجراءات. يتم استبعاد أنواع معينة من العبارات، مثل العبارات التي تحدد النطاقات وتنسيقها، من الدالات المخصصة. في هذه المقالة، ستتعرف على كيفية إنشاء الدالات المخصصة واستخدامها. لإنشاء الدالات وحدات الماكرو، يمكنك العمل مع محرر Visual Basic (VBE)، الذي يتم فتحه في نافذة جديدة منفصلة عن Excel.

لنفترض أن شركتك تقدم خصما كميا بنسبة 10 بالمائة على بيع منتج، شرط أن يكون الطلب لأكثر من 100 وحدة. في الفقرات التالية، سنشرح دالة لحساب هذا الخصم.

يوضح المثال أدناه نموذج طلب يسرد كل عنصر وكمية والسعر والخصم (إن وجدت) والسعر الموسع الناتج.

نموذج طلب مثال بدون دالة مخصصة

لإنشاء دالة DISCOUNT مخصصة في هذا المصنف، اتبع الخطوات التالية:

  1. اضغط على Alt+F11 لفتح محرر Visual Basic (على جهاز Mac، اضغط على FN+ALT+F11)،ثم انقر فوق إدراج > النمطية. تظهر نافذة وحدة نمطية جديدة على الجانب الأيسر Visual Basic المحرر.

  2. انسخ التعليمة البرمجية التالية واللصق بها إلى الوحدة النمطية الجديدة.

    Function DISCOUNT(quantity, price)
       If quantity >=100 Then
         DISCOUNT = quantity * price * 0.1
       Else
         DISCOUNT = 0
       End If
     
     DISCOUNT = Application.Round(Discount, 2)
    End Function
    

ملاحظة: لجعل التعليمات البرمجية الخاصة بك أكثر قراءة، يمكنك استخدام المفتاح Tab لخطوط التدرج التدرجي. إن التدرج الواصل هو لمنافعك فقط، وهو اختياري، حيث سيتم تشغيل التعليمة البرمجية باستخدامها أو بدونها. بعد كتابة سطر تم فيه Visual Basic، يفترض "المحرر" أن السطر التالي سيمر بطريقة مماثلة. للانتقال إلى حرف علامة تبويب واحد (أي إلى اليمين)، اضغط على Shift+Tab.

أنت الآن جاهز لاستخدام الدالة DISCOUNT الجديدة. أغلق Visual Basic، وحدد الخلية G7، وا اكتب ما يلي:

=DISCOUNT(D7,E7)

Excel حساب الخصم بنسبة 10 بالمائة على 200 وحدة بسعر 47.50 دولار لكل وحدة وترجع 950.00 دولار.

في السطر الأول من التعليمات البرمجية ل VBA، الدالة DISCOUNT(quantity, price) ، لقد قمت ب الإشارة إلى أن الدالة DISCOUNT تتطلب وسيطتين، الكمية والسعر. عند استدعاء الدالة في خلية ورقة عمل، يجب تضمين الوسيطتين. في الصيغة =DISCOUNT(D7,E7), D7 هي وسيطة الكمية، و E7 هي وسيطة السعر. يمكنك الآن نسخ صيغة DISCOUNT إلى G8:G13 للحصول على النتائج الموضحة أدناه.

دعنا ندرس كيفية تفسير Excel الدالة هذا. عند الضغط على Enter، Excel تبحث عن الاسم DISCOUNT في المصنف الحالي وتعثر على أنها دالة مخصصة في وحدة نمطية ل VBA. إن أسماء الوسيطات المحاطة بين الوالدين والكمية والسعر هيعنصر نائب للقيم التي يستند عليها حساب الخصم.

نموذج طلب مثال مع دالة مخصصة

تفحص العبارة If الموجودة في كتلة التعليمات البرمجية التالية وسيطة الكمية ويحدد ما إذا كان عدد العناصر المباعة أكبر من أو يساوي 100:

If quantity >= 100 Then
 DISCOUNT = quantity * price * 0.1
Else
 DISCOUNT = 0
End If

إذا كان عدد العناصر المباعة أكبر من أو يساوي 100، فإن VBA تنفذ العبارة التالية، التي تقوم بضرب قيمة الكمية في القيمة السعرية ثم ضرب الناتج في 0.1:

Discount = quantity * price * 0.1

يتم تخزين النتيجة كخصم متغير. تسمى عبارة VBA التي تخزن قيمة في متغير عبارة تعيين، لأنها تقيم التعبير على الجانب الأيسر من علامة المساواة وتعين النتيجة إلى اسم المتغير على اليمين. نظرا لأن الخصم المتغير له نفس اسم إجراء الدالة، يتم إرجاع القيمة المخزنة في المتغير إلى صيغة ورقة العمل التي تسمى الدالة DISCOUNT.

إذا كانت الكمية أقل من 100، فإن VBA تنفذ العبارة التالية:

Discount = 0

وأخيرا، ت تقريب العبارة التالية القيمة المعينة لمتغير الخصم إلى مكانين عشريين:

Discount = Application.Round(Discount, 2)

لا يوجد في VBA دالة ROUND، ولكن Excel الدالة. وبالتالي، لاستخدام ROUND في هذه العبارة، ستخبر VBA للبحث عن الأسلوب Round (الدالة) في كائن Application (Excel). يمكنك القيام بذلك بإضافة الكلمة Application قبل الكلمة Round. استخدم بناء الجملة هذا كلما احتجت إلى الوصول إلى Excel من وحدة نمطية ل VBA.

يجب أن تبدأ الدالة المخصصة ببيان الدالة وتنتهي ببيان End Function. بالإضافة إلى اسم الدالة، تحدد عادة العبارة الدالة وسيطة واحدة أو أكثر. ومع ذلك، يمكنك إنشاء دالة بدون وسيطات. Excel العديد من الدالات المضمنة— RAND و NOW، على سبيل المثال، التي لا تستخدم الوسيطات.

بعد العبارة الدالة، يتضمن إجراء دالة واحدة أو أكثر من عبارات VBA التي تتخذ القرارات وتنجز العمليات الحسابية باستخدام الوسيطات التي تم تمريرها إلى الدالة. وأخيرا، في مكان ما في إجراء الدالة، يجب تضمين بيان يعين قيمة لمتغير بنفس اسم الدالة. يتم إرجاع هذه القيمة إلى الصيغة التي تستدعي الدالة.

عدد الكلمات الأساسية ل VBA التي يمكنك استخدامها في الدالات المخصصة أصغر من العدد الذي يمكنك استخدامه في وحدات الماكرو. لا يسمح للدوال المخصصة بأي شيء آخر غير إرجاع قيمة إلى صيغة في ورقة عمل أو تعبير مستخدم في ماكرو أو دالة VBA أخرى. على سبيل المثال، لا يمكن للدوال المخصصة تغيير حجم النوافذ أو تحرير صيغة في خلية أو تغيير خيارات الخط أو اللون أو النمط للنص في خلية. إذا قمت بتضمين رمز "الإجراء" من هذا النوع في إجراء دالة، فإرجاع الدالة #VALUE! الخطأ.

الإجراء الوحيد الذي يمكن أن يقوم به إجراء الدالة (باستثناء إجراء العمليات الحسابية) هو عرض مربع حوار. يمكنك استخدام العبارة InputBox في دالة مخصصة كوسيلة للحصول على إدخال من المستخدم الذي يقوم بتنفيذ الدالة. يمكنك استخدام العبارة MsgBox كوسيلة لنقل المعلومات إلى المستخدم. يمكنك أيضا استخدام مربعات حوار مخصصة، أو UserForms،ولكن هذا الموضوع خارج نطاق هذه المقدمة.

حتى وحدات الماكرو البسيطة والوظائف المخصصة قد تكون صعبة القراءة. يمكنك تسهيل فهمها عن طريق كتابة نص توضيحي في شكل تعليقات. يمكنك إضافة تعليقات عن طريق وضع علامة تالي على النص التوضيحي قبل النص التوضيحي. على سبيل المثال، يعرض المثال التالي الدالة DISCOUNT مع التعليقات. تؤدي إضافة تعليقات مثل هذه إلى تسهيل الحفاظ على التعليمات البرمجية ل VBA مع مرور الوقت. إذا كنت بحاجة إلى إجراء تغيير على التعليمة البرمجية في المستقبل، سيكون لديك وقت أسهل لفهم ما قمت به في الأصل.

مثال على دالة VBA مع تعليقات

تقوم الفاصلة Excel بتجاهل كل شيء إلى اليمين على السطر نفسه، بحيث يمكنك إنشاء تعليقات إما على أسطر من جانبها أو على الجانب الأيسر من الأسطر التي تحتوي على التعليمات البرمجية ل VBA. قد تبدأ كتلة طويلة نسبيا من التعليمات البرمجية بتعليق يشرح الغرض العام لها، ثم تستخدم التعليقات الموضحة لتوثيق العبارات الفردية.

هناك طريقة أخرى لتوثيق وحدات الماكرو والوظائف المخصصة وهي منحها أسماء وصفية. على سبيل المثال، بدلا من تسمية تسميات الماكرو ،يمكنك تسميته MonthLabels لوصف الغرض الذي يخدمه الماكرو بشكل أكثر تحديدا. يكون استخدام الأسماء الوصفية ل وحدات الماكرو والوظائف المخصصة مفيدا بشكل خاص عند إنشاء العديد من الإجراءات، خاصة إذا قمت بإنشاء إجراءات ذات أغراض مماثلة ولكنها غير متطابقة.

إن كيفية توثيق وحدات الماكرو والوظائف المخصصة هي من تفضيلات شخصية. ما هو مهم هو استخدام بعض أسلوب الوثائق واستخدامه بشكل متناسق.

لاستخدام دالة مخصصة، يجب أن يكون المصنف الذي يحتوي على الوحدة النمطية التي أنشأت الدالة فيها مفتوحا. إذا لم يكن هذا المصنف مفتوحا، يمكنك الحصول على #NAME؟ عند محاولة استخدام الدالة. إذا قمت بالإشارة إلى الدالة في مصنف آخر، فيجب أن تسبق اسم الدالة باسم المصنف الذي تتواجد فيه الدالة. على سبيل المثال، إذا أنشأت دالة تسمى DISCOUNT في مصنف يسمى Personal.xlsب واستدعاء هذه الدالة من مصنف آخر، فيجب كتابة =personal.xlsb!discount()، وليس ببساطة =discount().

يمكنك حفظ بعض ضغطات المفاتيح (وأخطاء الكتابة المحتملة) عن طريق تحديد الدالات المخصصة من مربع الحوار إدراج دالة. تظهر الدالات المخصصة في الفئة معرف من قبل المستخدم:

مربع الحوار "إدراج دالة"

هناك طريقة أسهل لجعل الدالات المخصصة متوفرة في جميع الأوقات وهي تخزينها في مصنف منفصل ثم حفظ هذا المصنف كوابة إضافية. يمكنك بعد ذلك جعل هذه الوظائف الإضافية متوفرة كلما قمت بتشغيلها Excel. فيما يلي كيفية القيام بذلك:

  1. بعد إنشاء الدالات التي تحتاج إليها، انقر فوق ملف > حفظ باسم.

    في Excel 2007 ، انقر فوق الزر Microsoft Office، وانقر فوق حفظ باسم

  2. في مربع الحوار حفظ باسم، افتح القائمة المنسدل حفظ بنوع، ثم حدد Excel الإضافية. احفظ المصنف باسم يمكن التعرف عليه، مثل MyFunctions، في المجلد AddIns. سيقترح مربع الحوار حفظ باسم هذا المجلد، لذا كل ما عليك فعله هو قبول الموقع الافتراضي.

  3. بعد حفظ المصنف، انقر فوق ملف > Excel خيارات .

    في Excel 2007 ، انقر فوق الزر Microsoft Office، وانقر فوق Excel خيارات .

  4. في مربع Excel خيارات الوظائف الإضافية، انقر فوق الفئة الوظائف الإضافية.

  5. في القائمة المنسدل إدارة، حدد Excel الإضافية . ثم انقر فوق الزر الانتقال.

  6. في مربع الحوار الوظائف الإضافية، حدد خانة الاختيار الموجودة بجانب الاسم الذي استخدمته لحفظ المصنف، كما هو موضح أدناه.

    مربع الحوار "الوظائف الإضافية"

  1. بعد إنشاء الدالات التي تحتاج إليها، انقر فوق ملف > حفظ باسم.

  2. في مربع الحوار حفظ باسم، افتح القائمة المنسدل حفظ بنوع، ثم حدد Excel الإضافية. احفظ المصنف باسم يمكن التعرف عليه، مثل MyFunctions.

  3. بعد حفظ المصنف، انقر فوق أدوات > Excel الوظائف الإضافية.

  4. في مربع الحوار الوظائف الإضافية، حدد الزر استعراض للعثور على الوظائف الإضافية، وانقر فوق فتح ،ثم حدد المربع الموجود بجانب Add-In في المربع الوظائف الإضافية المتوفرة.

بعد اتباع هذه الخطوات، ستتوفر الدالات المخصصة في كل مرة تقوم فيها بتشغيل Excel. إذا كنت تريد الإضافة إلى مكتبة الوظائف، فرجع إلى Visual Basic المحرر. إذا كنت تبحث في Visual Basic "Project" ضمن عنوان VBAProject، سترى وحدة نمطية باسم ملف الوظائف الإضافية. ستت بإضافة الملحق xlam.

وحدة نمطية مسماة في vbe

يؤدي النقر نقرا مزدوجا فوق هذه الوحدة النمطية في Project المستكشف إلى Visual Basic "المحرر" لعرض التعليمات البرمجية للدالة. لإضافة دالة جديدة، ضع نقطة الإدراج بعد عبارة End Function التي تنهي الدالة الأخيرة في نافذة التعليمات البرمجية، وابدأ الكتابة. يمكنك إنشاء العديد من الدالات كما تريد بهذه الطريقة، وستتوفر دائما في الفئة معرف من قبل المستخدم في مربع الحوار إدراج دالة.

تم تأليف هذا المحتوى في الأصل بواسطة Mark Dodge وDge Stinson كجزء من كتابهم Microsoft Office Excel 2007 Inside Out. وقد تم تحديثه منذ ذلك الحين لتطبيقه على الإصدارات الأحدث من Excel أيضا.

هل تحتاج إلى مزيد من المساعدة؟

يمكنك دائماً الاستفسار من أحد الخبراء في مجتمع Excel التقني أو الحصول على الدعم في مجتمع الإجابات.

هل تحتاج إلى مزيد من المساعدة؟

توسيع المهارات
استكشاف التدريب
الحصول على الميزات الجديدة أولاً
الانضمام إلى Microsoft Insider

هل كانت المعلومات مفيدة؟

ما مدى رضاك عن جودة الترجمة؟
ما الذي أثّر في تجربتك؟

نشكرك على ملاحظاتك!

×