Skip to main content

كيفية إنشاء تقويم شهري/سنوي في Excel؟

Author: Sun Last Modified: 2025-05-30

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

إنشاء تقويم شهري أو سنوي باستخدام قالب Excel

إنشاء تقويم شهري باستخدام VBA

إنشاء تقويم شهري أو سنوي بسهولة باستخدام التقويم الدائم


إنشاء تقويم شهري أو سنوي باستخدام قالب Excel

في Excel، يمكنك استخدام قالب التقويم لإنشاء تقويم شهري أو سنوي.

1. في Excel 2010/2013، اضغط على ملف > جديد، وفي Excel 2007، اضغط على زر Office > جديد، ثم في القسم الأيمن من النافذة المنبثقة، اكتب كلمة التقويم في محرك البحث. انظر لقطة الشاشة:

في Excel 2010/2013

a screenshot of searching a calendar template in Excel

في Excel 2007

a screenshot of searching a calendar template in Excel 2007

2. اضغط Enter، ثم يتم سرد أنواع متعددة من التقاويم في النافذة. حدد نوع التقويم الذي تحتاجه، واضغط على تنزيل (أو إنشاء) في الجزء الأيمن. انظر لقطة الشاشة:

a screenshot of downloading the selected calendar template

الآن تم إنشاء التقويم في مصنف جديد. انظر لقطة الشاشة:

a screenshot of the created calendar


إنشاء تقويم شهري باستخدام VBA

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

1. اضغط على مفاتيح Alt + F11 لفتح نافذة Microsoft Visual Basic for Applications، واضغط على إدراج > وحدة، ثم انسخ والصق رمز VBA أدناه في النافذة.

VBA: إنشاء تقويم شهري.

Sub CalendarMaker()
       ' Unprotect sheet if had previous calendar to prevent error.
       ActiveSheet.Protect DrawingObjects:=False, Contents:=False, _
          Scenarios:=False
       ' Prevent screen flashing while drawing calendar.
       Application.ScreenUpdating = False
       ' Set up error trapping.
       On Error GoTo MyErrorTrap
       ' Clear area a1:g14 including any previous calendar.
       Range("a1:g14").Clear
       ' Use InputBox to get desired month and year and set variable
       ' MyInput.
       MyInput = InputBox("Type in Month and year for Calendar ")
       ' Allow user to end macro with Cancel in InputBox.
       If MyInput = "" Then Exit Sub
       ' Get the date value of the beginning of inputted month.
       StartDay = DateValue(MyInput)
       ' Check if valid date but not the first of the month
       ' -- if so, reset StartDay to first day of month.
       If Day(StartDay) <> 1 Then
           StartDay = DateValue(Month(StartDay) & "/1/" & _
               Year(StartDay))
       End If
       ' Prepare cell for Month and Year as fully spelled out.
       Range("a1").NumberFormat = "mmmm yyyy"
       ' Center the Month and Year label across a1:g1 with appropriate
       ' size, height and bolding.
       With Range("a1:g1")
           .HorizontalAlignment = xlCenterAcrossSelection
           .VerticalAlignment = xlCenter
           .Font.Size = 18
           .Font.Bold = True
           .RowHeight = 35
       End With
       ' Prepare a2:g2 for day of week labels with centering, size,
       ' height and bolding.
       With Range("a2:g2")
           .ColumnWidth = 11
           .VerticalAlignment = xlCenter
           .HorizontalAlignment = xlCenter
           .VerticalAlignment = xlCenter
           .Orientation = xlHorizontal
           .Font.Size = 12
           .Font.Bold = True
           .RowHeight = 20
       End With
       ' Put days of week in a2:g2.
       Range("a2") = "Sunday"
       Range("b2") = "Monday"
       Range("c2") = "Tuesday"
       Range("d2") = "Wednesday"
       Range("e2") = "Thursday"
       Range("f2") = "Friday"
       Range("g2") = "Saturday"
       ' Prepare a3:g7 for dates with left/top alignment, size, height
       ' and bolding.
       With Range("a3:g8")
           .HorizontalAlignment = xlRight
           .VerticalAlignment = xlTop
           .Font.Size = 18
           .Font.Bold = True
           .RowHeight = 21
       End With
       ' Put inputted month and year fully spelling out into "a1".
       Range("a1").Value = Application.Text(MyInput, "mmmm yyyy")
       ' Set variable and get which day of the week the month starts.
       DayofWeek = WeekDay(StartDay)
       ' Set variables to identify the year and month as separate
       ' variables.
       CurYear = Year(StartDay)
       CurMonth = Month(StartDay)
       ' Set variable and calculate the first day of the next month.
       FinalDay = DateSerial(CurYear, CurMonth + 1, 1)
       ' Place a "1" in cell position of the first day of the chosen
       ' month based on DayofWeek.
       Select Case DayofWeek
           Case 1
               Range("a3").Value = 1
           Case 2
               Range("b3").Value = 1
           Case 3
               Range("c3").Value = 1
           Case 4
               Range("d3").Value = 1
           Case 5
               Range("e3").Value = 1
           Case 6
               Range("f3").Value = 1
           Case 7
               Range("g3").Value = 1
       End Select
       ' Loop through range a3:g8 incrementing each cell after the "1"
       ' cell.
       For Each cell In Range("a3:g8")
           RowCell = cell.Row
           ColCell = cell.Column
           ' Do if "1" is in first column.
           If cell.Column = 1 And cell.Row = 3 Then
           ' Do if current cell is not in 1st column.
           ElseIf cell.Column <> 1 Then
               If cell.Offset(0, -1).Value >= 1 Then
                   cell.Value = cell.Offset(0, -1).Value + 1
                   ' Stop when the last day of the month has been
                   ' entered.
                   If cell.Value > (FinalDay - StartDay) Then
                       cell.Value = ""
                       ' Exit loop when calendar has correct number of
                       ' days shown.
                       Exit For
                   End If
               End If
           ' Do only if current cell is not in Row 3 and is in Column 1.
           ElseIf cell.Row > 3 And cell.Column = 1 Then
               cell.Value = cell.Offset(-1, 6).Value + 1
               ' Stop when the last day of the month has been entered.
               If cell.Value > (FinalDay - StartDay) Then
                   cell.Value = ""
                   ' Exit loop when calendar has correct number of days
                   ' shown.
                   Exit For
               End If
           End If
       Next

       ' Create Entry cells, format them centered, wrap text, and border
       ' around days.
       For x = 0 To 5
           Range("A4").Offset(x * 2, 0).EntireRow.Insert
           With Range("A4:G4").Offset(x * 2, 0)
               .RowHeight = 65
               .HorizontalAlignment = xlCenter
               .VerticalAlignment = xlTop
               .WrapText = True
               .Font.Size = 10
               .Font.Bold = False
               ' Unlock these cells to be able to enter text later after
               ' sheet is protected.
               .Locked = False
           End With
           ' Put border around the block of dates.
           With Range("A3").Offset(x * 2, 0).Resize(2, _
           7).Borders(xlLeft)
               .Weight = xlThick
               .ColorIndex = xlAutomatic
           End With

           With Range("A3").Offset(x * 2, 0).Resize(2, _
           7).Borders(xlRight)
               .Weight = xlThick
               .ColorIndex = xlAutomatic
           End With
           Range("A3").Offset(x * 2, 0).Resize(2, 7).BorderAround _
              Weight:=xlThick, ColorIndex:=xlAutomatic
       Next
       If Range("A13").Value = "" Then Range("A13").Offset(0, 0) _
          .Resize(2, 8).EntireRow.Delete
       ' Turn off gridlines.
       ActiveWindow.DisplayGridlines = False
       ' Protect sheet to prevent overwriting the dates.
       ActiveSheet.Protect DrawingObjects:=True, Contents:=True, _
          Scenarios:=True

       ' Resize window to show all of calendar (may have to be adjusted
       ' for video configuration).
       ActiveWindow.WindowState = xlMaximized
       ActiveWindow.ScrollRow = 1

       ' Allow screen to redraw with calendar showing.
       Application.ScreenUpdating = True
       ' Prevent going to error trap unless error found by exiting Sub
       ' here.
       Exit Sub
   ' Error causes msgbox to indicate the problem, provides new input box, 
   ' and resumes at the line that caused the error.
   MyErrorTrap:
       MsgBox "You may not have entered your Month and Year correctly." _
           & Chr(13) & "Spell the Month correctly" _
           & " (or use 3 letter abbreviation)" _
           & Chr(13) & "and 4 digits for the Year"
       MyInput = InputBox("Type in Month and year for Calendar")
       If MyInput = "" Then Exit Sub
       Resume
   End Sub

تم الحصول على رمز VBA من هذا الموقع https://support.microsoft.com/en-us/kb/150774

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

a screenshot of typing the specific month you need to create in the calendar

3. اضغط موافق. الآن تم إنشاء تقويم يناير 2015 في الورقة النشطة.

a screenshot of the created calendar

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


إنشاء تقويم شهري أو سنوي بسهولة باستخدام التقويم الدائم

التقويم الدائم هو أحد الأدوات القوية في Kutools لـ Excel، ويمكنه مساعدتك في إنشاء تقويم شهري أو سنوي بسرعة في Excel دفعة واحدة.

1. اضغط على Kutools Plus > ورقة العمل > التقويم الدائم.

2. في مربع الحوار المنبثق، حدد مدة الشهر الذي تريد إنشاء التقويم لها، واضغط على إنشاء. انظر لقطة الشاشة:

a screenshot of specifying the starting and ending months in the Perpetual Calendar dialog box

ثم يتم إنشاء مصنف جديد يحتوي على خمس أوراق عمل للتقويم. انظر لقطة الشاشة:

a screenshot showing the final created month calendars in Excel

نصيحة:

إذا كنت تريد فقط إنشاء تقويم لشهر معين، فما عليك سوى تحديد نفس الشهر في كل من مربعي النص من وإلى في مربع الحوار.

اضغط هنا لمعرفة المزيد حول التقويم الدائم


أفضل أدوات الإنتاجية لمكتب العمل

🤖 Kutools AI Aide: أحدث ثورة في تحليل البيانات من خلال: التنفيذ الذكي |توليد الشيفرة |إنشاء الصيغ المخصصة |تحليل البيانات وتوليد الرسوم البيانية |استدعاء الوظائف المحسنة
الميزات الشائعة: البحث، تمييز أو وضع علامة على المكررات | حذف الصفوف الفارغة | دمج الأعمدة أو العنوان دون فقدان البيانات | تقريب ...
بحث متقدم: بحث V متعدد المعايير | بحث V متعدد القيم | بحث في عدة ورقات | مطابقة غامضة ....
قائمة منسدلة متقدمة: إنشاء قائمة منسدلة بسرعة | قائمة منسدلة تابعة | قائمة منسدلة متعددة الاختيار ....
إدارة الأعمدة: إضافة عدد محدد من الأعمدة | نقل الأعمدة | تبديل حالة إظهار الأعمدة المخفية | مقارنة النطاق والأعمدة ...
ميزات مميزة: التركيز على الشبكة | عرض التصميم | شريط الصيغ المحسن | أدوات المصنف & أدوات الورقة العمل | مكتبة النص التلقائي (Auto Text) | منتقي التاريخ | دمج البيانات | تشفير/فك تشفير الخلايا | إرسال البريد الإلكتروني حسب القائمة | مرشح متقدم | تصفية خاصة (تصفية الخلايا التي تحتوي على خط عريض/مائل/يتوسطه خط...) ...
أفضل15 مجموعة أدوات:12 أداة نصية (إضافة نص، حذف الأحرف المحددة، ...) | أكثر من50 نوع من الرسوم البيانية (مخطط جانت، ...) | أكثر من40 صيغة عملية (حساب العمر بناءً على تاريخ الميلاد، ...) |19 أداة إدراج (إدراج رمز الاستجابة السريعة، إدراج صورة من المسار، ...) |12 أداة تحويل (تحويل إلى كلمات، تحويل العملة، ...) |7 أدوات دمج وتقسيم (دمج متقدم للصفوف، تقسيم الخلايا، ...) | ... والمزيد

عزز مهاراتك في Excel مع Kutools لـ Excel، واختبر الكفاءة كما لم يحدث من قبل. Kutools لـ Excel يقدم أكثر من300 ميزة متقدمة لزيادة الإنتاجية وتوفير وقت الحفظ. انقر هنا للحصول على الميزة التي تحتاجها أكثر...


Office Tab يقدم واجهة التبويب لـ Office، ويجعل عملك أسهل بكثير

  • تمكين تحرير وقراءة المستندات عبر التبويبات في Word وExcel وPowerPoint.
  • افتح وأنشئ عدة مستندات في تبويبات جديدة ضمن نفس النافذة، بدلاً من فتحها في نوافذ منفصلة.
  • يزيد إنتاجيتك بنسبة50%، ويقلل مئات النقرات بالماوس يومياً!