عداد VBA | كيفية إنشاء عداد في Excel VBA؟ (مع أمثلة)

عداد Excel VBA

هناك وظيفة مختلفة في MS Excel لحساب القيم سواء كانت سلسلة أو أرقام. يمكن إجراء العد بناءً على بعض المعايير. تشمل الوظائف COUNT و COUNTA و COUNTBLANK و COUNTIF و COUNTIFS في Excel. ومع ذلك ، لا يمكن لهذه الوظائف القيام ببعض المهام مثل عد الخلايا بناءً على لونها ، أو حساب القيم الغامقة فقط ، وما إلى ذلك. وهذا هو السبب في أننا سننشئ عدادًا في VBA حتى نتمكن من الاعتماد على هذه الأنواع من المهام في Excel.

دعونا ننشئ بعض العداد في Excel VBA.

أمثلة على Excel VBA Counter

يمكنك تنزيل قالب Excel من VBA Counter من هنا - قالب VBA Counter Excel

فيما يلي أمثلة على العداد في VBA.

مثال 1

لنفترض أن لدينا بيانات مثل أعلاه لـ 32 صفًا. سننشئ عداد VBA ، والذي سيحسب القيم ، التي تزيد عن 50 وعداد واحد آخر لحساب القيم ، التي تقل عن 50. سننشئ رمز VBA بهذه الطريقة بحيث يمكن للمستخدم الحصول على بيانات لـ صفوف غير محدودة في Excel.

لفعل الشيء نفسه ، ستكون الخطوات:

تأكد من ظهور  علامة التبويب المطور Excel. لجعل علامة التبويب مرئية (إذا لم تكن كذلك) ، الخطوات هي:

انقر فوق علامة التبويب "ملف" في الشريط واختر "خيار" من القائمة.

اختر " تخصيص الشريط" من القائمة ، حدد مربع "المطور" ، وانقر فوق " موافق" .

الآن علامة التبويب "المطور" مرئية.

أدخل زر الأمر باستخدام الأمر "إدراج" المتاح في مجموعة "عناصر التحكم" في علامة التبويب "المطور" .

أثناء الضغط على مفتاح ALT ، قم بإنشاء زر الأمر بالماوس. إذا واصلنا الضغط على مفتاح ALT ، فستنتقل حواف زر الأمر تلقائيًا مع حدود الخلايا.

انقر بزر الماوس الأيمن فوق زر الأمر لفتح القائمة السياقية (تأكد من تنشيط "وضع التصميم" وإلا فلن نتمكن من فتح القائمة السياقية).

اختر "خصائص" من القائمة.

قم بتغيير خصائص زر الأمر ، مثل الاسم والتعليق والخط ، إلخ.

انقر بزر الماوس الأيمن مرة أخرى واختر "عرض الرمز" من القائمة السياقية.

يتم فتح Visual Basic Editor الآن وبشكل افتراضي ، يتم بالفعل إنشاء روتين فرعي لزر الأمر.

سنكتب الكود الآن. سوف نعلن عن 3 متغيرات. واحد لغرض الحلقة ، واحد للعد والآخر لتخزين القيمة للصف الأخير.

سنستخدم الكود لتحديد الخلية A1 ثم المنطقة الحالية للخلية A1 ثم ننتقل إلى آخر صف مملوء للحصول على آخر رقم صف مملوء.

سنقوم بتشغيل حلقة "for" في VBA للتحقق من القيم المكتوبة في الخلية A2 إلى آخر خلية مملوءة في العمود A. سنزيد قيمة متغير "العداد" بمقدار 1 إذا كانت القيمة أكبر من 50 وسنغير لون خط الخلية إلى "أزرق" وإذا كانت القيمة أقل من 50 ، فسيكون لون خط الخلية "أحمر" .

بعد التدقيق والعد ، نحتاج إلى عرض القيم. للقيام بالشيء نفسه ، سوف نستخدم "VBA MsgBox".

رمز:

 Private Sub CountingCellsbyValue_Click () Dim i ، Counter As Integer Dim lastrow As Long lastrow = Range ("A1"). CurrentRegion.End (xlDown) .Row For i = 2 to lastrow If Cells (i، 1) .Value> 50 ثم counter = counter + 1 Cells (i، 1) .Font.ColorIndex = 5 Else Cells (i، 1) .Font.ColorIndex = 3 End If Next i MsgBox "توجد & counter &" قيم أكبر من 50 " & _ vbCrLf & "توجد" & lastrow - counter & "قيم أقل من 50" End Sub 

قم بإلغاء تنشيط "وضع التصميم" وانقر فوق "زر الأمر" . ستكون النتيجة على النحو التالي.

المثال رقم 2

لنفترض أننا نريد إنشاء عداد الوقت باستخدام Excel VBA على النحو التالي:

إذا نقرنا على الزر "ابدأ" ، يبدأ المؤقت وإذا نقرنا على الزر "إيقاف" ، يتوقف المؤقت.

لفعل الشيء نفسه ، ستكون الخطوات:

قم بإنشاء تنسيق مثل هذا في ورقة إكسل.

قم بتغيير تنسيق الخلية A2 كـ "hh: mm: ss" .

ادمج الخلايا C3 إلى G7 باستخدام الأمر Merge and Center Excel  في مجموعة "المحاذاة" في علامة التبويب "الصفحة الرئيسية" .

أعط مرجع الخلية A2 للخلية المدمجة فقط ثم قم بالتنسيق مثل جعل نمط الخط إلى "Baskerville" ، وحجم الخط إلى 60 ، وما إلى ذلك.

أنشئ زري الأمر "ابدأ" و "إيقاف" باستخدام الأمر "إدراج" المتاح في مجموعة "عناصر التحكم" في علامة التبويب "المطور" .

باستخدام أمر "الخصائص" المتاح في مجموعة "عناصر التحكم" في علامة التبويب "المطور" ، قم بتغيير الخصائص.

حدد أزرار الأوامر واحدًا تلو الآخر واختر الأمر "عرض الرمز" من مجموعة "عناصر التحكم" في علامة التبويب "المطور" لكتابة الرمز على النحو التالي.

اختر من القائمة المنسدلة زر الأمر المناسب.

أدخل وحدة نمطية في "ThisWorkbook" بالنقر بزر الماوس الأيمن فوق "Thisworkbook" ثم اختر "إدراج" ثم "وحدة نمطية" .

اكتب الكود التالي في الوحدة النمطية.

رمز:

 Sub start_time () Application.OnTime Now + TimeValue ("00:00:01")، "next_moment" End Sub end_time () Application.OnTime Now + TimeValue ("00:00:01")، "next_moment"،، False End Sub Sub next_moment () If Worksheets ("Time Counter"). Range ("A2"). Value = 0 ثم الخروج من أوراق العمل الفرعية ("Time Counter"). Range ("A2"). Value = Worksheets ("Time عداد "). النطاق (" A2 "). القيمة - قيمة الوقت (" 00:00:01 ") start_time End Sub 

لقد استخدمنا طريقة " onTime " الخاصة بكائن التطبيق ، والتي تُستخدم لتشغيل إجراء في وقت محدد. الإجراء الذي قمنا بجدولته للتشغيل هو "اللحظة التالية" .

احفظ الكود. اكتب الوقت في الخلية A2 وانقر فوق الزر "ابدأ" لبدء عداد الوقت.

المثال رقم 3

لنفترض أن لدينا قائمة بالطلاب جنبًا إلى جنب مع العلامات التي سجلوها. نريد أن نحسب عدد الطلاب الذين نجحوا والذين فشلوا.

لفعل الشيء نفسه ، سنكتب رمز VBA.

ستكون الخطوات:

افتح محرر Visual Basic بالضغط على الاختصار في excel Alt + F11 وانقر نقرًا مزدوجًا على "Sheet3 (عدد الطلاب)" لإدراج روتين فرعي بناءً على حدث في الورقة 3.

اختر "ورقة عمل" من القائمة المنسدلة.

عندما نختار "ورقة العمل" من القائمة ، يمكننا أن نرى أن هناك أحداثًا مختلفة في القائمة المنسدلة المجاورة. نحتاج إلى اختيار "SelectionChange" من القائمة.

سنعلن عن متغير VBA "lastrow" لتخزين رقم الصف الأخير حيث يمكن زيادة قائمة الطلاب ، و "اجتياز" لتخزين عدد من الطلاب الذين نجحوا و "فشل" في تخزين عدد من الطلاب الذين فشلوا.

سنخزن قيمة رقم الصف الأخير في "lastrow".

وسوف نخلق ل 'ل' حلقة لحساب بناء على الشرط.

لقد قمنا بتعيين الشرط إذا كانت العلامات الإجمالية أكبر من 99 ، ثم أضف القيمة 1 لمتغير "تمرير" وإضافة قيمة واحدة إلى متغير "فشل" إذا فشل الشرط.

العبارة الأخيرة تجعل العنوان "ملخص" غامقًا.

لطباعة القيم في الورقة ، سيكون الرمز:

رمز:

 تغيير ورقة عمل فرعية خاصة (ByVal Target As Range) Dim lastrow مثل تمرير Dim طويل حيث فشل Dimer Integer As Integer lastrow = Range ("A1"). CurrentRegion.End (xlDown) .Row For i = 2 To lastrow If Cells (i، 5 )> 99 ثم اجتياز = اجتياز + 1 فشل آخر = فشل + 1 إنهاء إذا خلايا (1 ، 7). Font.Bold = True Next i Range ("G1"). القيمة = "Summary" Range ("G2"). القيمة = "عدد الطلاب الذين نجحوا هو" & نجاح المدى ("G3"). القيمة = "عدد الطلاب الذين فشلوا هو" & رسوب End Sub 

الآن عندما يكون هناك تغيير في التحديد ، سيتم حساب القيم مرة أخرى على النحو التالي:

أشياء للذكرى

  1. احفظ الملف بعد كتابة التعليمات البرمجية في VBA بامتداد .xlsm excel وإلا فلن يعمل الماكرو.
  2. استخدم حلقة "For" عندما تقرر بالفعل أنه بالنسبة لعدد المرات ، سيتم تشغيل الكود في حلقة VBA.

$config[zx-auto] not found$config[zx-overlay] not found