/ / أيام الأسبوع في Excel VBA

أيام الأسبوع في Excel VBA

أدناه سننظر في برنامج في Excel VBA يحسب عدد أيام الأسبوع بين تاريخين.

أيام الأسبوع هي: الاثنين والثلاثاء والأربعاء والخميس والجمعة.

موقف:

أيام الأسبوع في Excel VBA

ملاحظة: التواريخ في تنسيق الولايات المتحدة. الأشهر الأولى ، الأيام الثانية. يعتمد هذا النوع من التنسيقات على الإعدادات الإقليمية لنوافذك.

1. أولا ، نعلن خمسة متغيرات. date1 من type تاريخ ، date2 من type تاريخ ، dateToCheck من النوع Date ، أيام BETAIN من النوع Integer ، أيام الأسبوع من النوع Integer و i من النوع Integer.

Dim date1 As Date, date2 As Date, dateToCheck As Date
Dim daysBetween As Integer, weekdays As Integer, i As Integer

2. نقوم بتهيئة أربعة متغيرات. نحن نستخدم الدالة DateDiff لتهيئة المتغير daysBETween. هذه الوظيفة لها ثلاث حجج. نملأ "د" للحجة الأولى لأننا نريد عدد الأيام بين التاريخ 1 والتاريخ 2.

weekdays = 0
date1 = Range("B2")
date2 = Range("B3")
daysBetween = DateDiff("d", date1, date2)

3. نحتاج إلى التحقق من كل تاريخ بين التاريخ 1 والتاريخ 2 (بما في ذلك التاريخ 1 والتاريخ 2) ما إذا كان التاريخ هو يوم من أيام الأسبوع أم لا. إذا كانت الإجابة نعم ، فنحن نزيد أيام الأسبوع من خلال 1. سنستخدم حلقة For Next.

For i = 0 To daysBetween

4. نستخدم الدالة DateAdd للحصول على كل تاريخ نحتاج إلى التحقق منه. هذه الوظيفة لها ثلاث حجج. نقوم بملء "د" للوسيطة الأولى لأننا نريد إضافة أيام ، i للوسيطة الثانية ، و date1 للحجة الثالثة حيث نريد إضافة i أيام إلى date1. بهذه الطريقة يمكن لـ Excel VBA التحقق من كل تاريخ بين التاريخ 1 والتاريخ 2 بدءًا من date1. أضف سطر التعليمة البرمجية التالية:

dateToCheck = DateAdd("d", i, date1)

مثال: بالنسبة إلى i = 3 ، يقوم Excel VBA بالتحقق من date1 + 3 أيام.

5. بعد ذلك ، نستخدم الدالة Weekday (البناء في الوظيفة) للتحقق مما إذا كان dateToCheck يومًا من أيام الأسبوع أم لا. تُرجع الدالة Weekday 1 لـ الأحد و 7 لـ السبت. لذلك ، نزيد فقط المتغير أيام الأسبوع إذا كان Weekday (dateToCheck) لا يساوي 1 ولا يساوي 7 (<> يعني لا يساوي). الأسطر التعليمات البرمجية التالية الحصول على المهمة.

If (Weekday(dateToCheck) <> 1 And Weekday(dateToCheck) <> 7) Then
    weekdays = weekdays + 1
End If

6. لا تنس أن تغلق الحلقة.

Next i

7. وأخيرًا ، نعرض عدد أيام الأسبوع باستخدام MsgBox. نستخدم عامل التشغيل لربط سلسلتين (ضم). على الرغم من أن أيام الأسبوع ليست سلسلة تعمل هنا.

MsgBox weekdays & " weekdays between these two dates"

8. ضع الماكرو الخاص بك في زر أمر واختبره.

نتيجة:

نتيجة ايام الاسبوع

اقرأ أيضًا: