كيفية إنشاء دالة مستحدثة في برنامج مايكروسوفت إكسل

تنزيل المقالتنزيل المقال

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

  1. How.com.vn العربية: Step 1 أنشئ مصنفًا جديدًا...
    أنشئ مصنفًا جديدًا أو افتح المصنف الذي ترغب باستخدام الدالة المستحدثة الجديدة بداخله.
  2. How.com.vn العربية: Step 2 افتح محرّر فيجوال بيسك
    المضمن في برنامج مايكروسوفت إكسل عن طريق التوجه إلى أدوات ← وحدات ماكرو ← محرّر فيجوال بيسك (أو عن طريق استخدام اختصار لوحة المفاتيح Alt+F11).
  3. How.com.vn العربية: Step 3 أضف وحدة جديد
    للمصنف عن طريق النقر على الزر الموضح في الصورة. يمكنك إنشاء الدالة المستحدثة في ورقة العمل نفسها دون إضافة وحدة جديدة، إلا أنك لن تتمكن من استخدام الدالة في أوراق العمل الأخرى بداخل نفس المصنف.
  4. Step 4 أنشئ "ترويسة" أو "نموذج أولي" للدالة المستحدثة.
    يجب أن تكون الدالة بالشكل التالي:

    public function "The Name Of Your Function" (param1 As type1, param2 As type2 ) As return Type، مع استبدال الجزء "The Name Of Your Function" باسم الدالة الذي ترغب به، واستبدال param1 بالمعامل رقم 1، واستبدال type1 بنوع المعامل رقم 1... وهكذا، علمًا بأن الدالة يمكن أن تحتوي على أي عدد من المعاملات حسب رغبتك ويمكن اختيار أي نوع بيانات من أنواع بيانات إكسل الرئيسية أو اختيار أنواع العناصر لتكون مجال "Range". معاملات الدالة هي المدخلات التي تعمل الدالة عليها، فإن كتبنا الدالة SIN(45) على سبيل المثال لحساب جيب الزاوية 45، سيكون الرقم 45 هو معامل الدالة، مما يعني أن كود الدالة سيستخدم هذه القيمة لحساب قيمة أخرى وإظهار النتيجة.
  5. How.com.vn العربية: Step 5 أضف كود الدالة مع التأكد من:
    1) استخدام القيم المعطاة كمعاملات. 2) تعيين النتيجة لاسم الدالة. 3) إنهاء الدالة بأمر إنهاء الدالة "end function". قد يتطلب تعلم البرمجة باستخدام فيجوال بيسيك أو أي لغة برمجة أخرى بعض الوقت والاستعانة بمقال تفصيلي، إلا أن الدوال تستخدم وحدات كود برمجي صغيرة عادة وتستغل خصائص معدودة من لغة البرمجة. إليك الآن العناصر الأكثر فائدة في لغة فيجوال بيسيك:
    1. الوحدة الشرطية If التي تسمح لك بتنفيذ جزء من الكود البرمجي عند تحقق شرط معين. على سبيل المثال:


      Public Function Course Result(grade As Integer) As String
        If grade >= 5 Then
          CourseResult = "مقبول"
        Else
          CourseResult = "مرفوض"
        End If
      End Function


      لاحظ العناصر الموجودة بداخل الوحدة If: IF الشرط THEN الكود ELSE الكود END IF، علمًا بأن كتابة كلمة Else بجانب الجزء الثاني من الكود اختيارية.
    2. تسمح لك وحدة Do بتنفيذ جزء من الكود "أثناء" أو "حتى" تحقّق شرط معين. على سبيل المثال:

      Public Function IsPrime(value As Integer) As Boolean
        Dim i As Integer
        i = 2
        IsPrime = True
        Do
          If value / i = Int(value / i) Then
            IsPrime = False
          End If
          i = i + 1
        Loop While i < value And IsPrime = True
      End Function


      لاحظ العناصر الآن مجددًا: DO الكود LOOP WHILE/UNTIL الشرط. لاحظ السطر الثاني أيضًا وفيه تعريف متغير، علمًا بأنه من الممكن إضافة متغيرات للكود لتتمكن من استخدامها لاحقًا، لأن المتغيرات تعمل كقيم مؤقتة داخل الكود البرمجي. أخيرًا، لاحظ تعريف الدالة بنوع "بوليان" (قيمة منطقية)، وهو أحد أنواع البيانات التي تسمح بقيم "صواب" أو "خطأ" فقط. من ناحية أخرى، الطريقة التي استخدمناها في الكود لتحديد ما إن كان الرقم "أوليًا" ليست هي الأمثل، إلا أننا تركناها بهذا الشكل لتسهيل قراءة الكود البرمجي.
    3. تُنفذ وحدة "for" جزءًا من الكود لعدد محدد من المرات. على سبيل المثال:

      Public Function Factorial(value As Integer) As Long
        Dim result As Long
        Dim i As Integer
        If value = 0 Then
          result = 1
        ElseIf value = 1 Then
          result = 1
        Else
          result = 1
          For i = 1 To value
            result = result * i
          Next
        End If
        Factorial = result
      End Function


      لاحظ العناصر مرة أخرى:FOR المتغير = الحد الأدنى TO الحد الأعلى الكود NEXT. لاحظ أيضًا عنصر ElseIf المضاف في عبارة If؛ يسمح هذا العنصر بإضافة مزيد من الخيارات للكود الذي ترغب بتنفيذه. أخيرًا، لاحظ تعريف الدالة والمتغير "result" بنوع "Long"؛ يسمح هذا النوع من أنواع البيانات بوجود قيم أكبر بكثير من نوع بيانات "Integer".

      . في المثال التالي كود دالة تحول الأرقام الصغيرة إلى كلمات.
  6. How.com.vn العربية: Step 6 ارجع إلى المصنف...
    ارجع إلى المصنف واستخدم الدالة عن طريق وضع علامة "=" في بداية محتوى الخلية متبوعة باسم الدالة المستحدثة التي أنشأتها. اكتب بعد اسم الدالة قوسًا مفتوحًا، ثم اكتب المعاملات مفصولة بعلامات "فاصلة" وأغلق القوس. على سبيل المثال:

    =NumberToLetters(A4)

    يمكنك أيضًا استخدام الدالة المستحدثة التي أنشأتها عن طريق البحث عنها في تصنيف "مستحدثة" بداخل معالج إدراج الدوال. كل ما عليك فعله في هذه الحالة هو النقر على زر Fx الموجود إلى يسار شريط المعادلات.يمكن أن تكون المعاملات بأنواع ثلاثة:
    1. "قيم ثابتة" يتم إدخالها في معادلة الخلية مباشرة. يجب في هذه الحالة وضع البيانات من نوع "String" بداخل علامات اقتباس.
    2. "مراجع الخلية" مثل "B6" أو "مراجع نطاق الخلايا" مثل A1:C3 (يجب أن يكون المعامل من نوع البيانات "Range").
    3. دوال أخرى متداخلة بداخل الدالة الخاصة بك (يمكن تضمين دالتك أيضًا لتصبح متداخلة بداخل دوال أخرى). مثال: =Factorial(MAX(D6:D8))
  7. How.com.vn العربية: Step 7 تحقّق من صحة النتيجة
    بعد استخدام الدالة عدة مرات لضمان تعاملها مع قيم المعاملات المختلفة بشكل صحيح.

أفكار مفيدة

  • احرص على ترك فاصل في كل مرة تكتب فيها وحدة كود بداخل تركيب تحكم مثل "IF" أو "FOR" أو "DO" أو غير ذلك، عن طريق كتابة عدة مسافات أو الضغط على زر تاب في لوحة المفاتيح (يرجع أسلوب ترك المسافات لاختيارك الشخصي). يُسهّل ذلك من فهم الكود البرمجي ومن اكتشاف الأخطاء وتحسين الكود البرمجي.
  • اقرأ مقال طريقة كتابة وحدة ماكرو بسيطة في برنامج إكسل إن لم تكن متأكدًا من كيفية كتابة كود دالة ما.
  • قد لا تحتاج الدالة إلى كل المعاملات لحساب النتيجة أحيانًا، ويمكنك في هذه الحالة استخدام الكلمة المفتاحية "اختياري"/Optional قبل اسم المعامل في ترويسة الدالة. يمكنك استخدام الدالة IsMissing(اسم المعامل) داخل الكود لتحديد ما إن كان قد تم تعيين قيمة للمعامل أم لا.
  • استخدم اسمًا غير محجوز لاسم دالة أخرى في برنامج إكسل بشكل مسبق، لأنك لن تتمكن من تعريف دالة جديدة بنفس اسم دالة سابقة.
  • يحتوي برنامج إكسل على العديد من الدوال المضمنة التي يمكن استخدامها لتنفيذ معظم العمليات الحسابية، إما باستخدام دوال منفصلة أو الدمج بين الدوال المختلفة، لذا تأكد من الاطلاع على قائمة كل الدوال المتاحة قبل البدء بكتابة دالة مستحدثة. من الأسرع غالبًا الاعتماد على واحدة من الدوال المضمّنة بدلًا من إنشاء واحدة جديدة تؤدي نفس الغرض!

تحذيرات

  • يُعطل البعض وحدات ماكرو كنوع من إجراءات الأمان، لذا أعلِم زملائك بأن المصنف الذي ترسله إليهم يحتوي على وحدات ماكرو يمكنهم الوثوق بها وأنها لن تؤذي أجهزتهم على الإطلاق.
  • لا تعد الدوال المستخدمة في هذا المقال، بأي شكل من الأشكال، الوسيلة الأفضل لحل المشاكل المختصة بها، ولقد تم استخدامها فقط بغرض شرح استخدام تراكيب التحكم الخاصة بلغة البرمجة فقط.
  • يتوفر في لغة برمجة فيجوال بيسك، كأي لغة برمجة أخرى، تراكيب تحكم أخرى غير "DO" و "IF" و "FOR" ولقد تم شرح هذه التراكيب في هذا المقال لتوضيح الوظائف المختلفة التي يمكن تنفيذها بداخل الكود المصدري للدالة ويمكنك إيجاد الكثير من الشروحات لتعلّم لغة فيجوال بيسيك على شبكة الإنترنت.

المزيد حول هذا المقال

يُكتب المحتوى على ويكي هاو بأسلوب الويكي أو الكتابة التشاركية؛ أي أن أغلبية المقالات ساهم في كتابتها أكثر من مؤلف، عن طريق التحرير والحذف والإضافة للنص الأصلي. ساهم 13 فرد في إنشاء هذا المقال. تعاونوا سويًا، دون أن يهتم بعضهم بذكر هويته الشخصية، على تحرير المقال والتطوير المتواصل لمحتواه. تم عرض هذا المقال ١٣٬٦٣٤ مرة/مرات.
تم عرض هذه الصفحة ١٣٬٦٣٤ مرة.

هل ساعدك هذا المقال؟