როგორ შევქმნათ კალენდარი თქვენს Excel სამუშაო ფურცელში VBA სკრიპტით

გააზიარე ახლა:

Excel-ს აქვს გამოყენების ფართო სპექტრი. ამ სტატიაში ჩვენ გაჩვენებთ, თუ როგორ უნდა შექმნათ კალენდარი სამუშაო ფურცელში მაკროს გამოყენებით.

თქვენს Excel-ში მონაცემების შენახვისა და ანალიზის გარდა, შეგიძლიათ გამოიყენოთ იგი სხვა ამოცანების შესასრულებლად. მაგალითად, შეგიძლიათ შეაგროვოთ ინფორმაცია Excel-ის გამოყენებით, ან შეგიძლიათ ჩაწეროთ თქვენი დაგეგმვა სამუშაო ფურცელში. დღეს ჩვენ ვიპოვეთ ახალი გამოყენება. თქვენ შეგიძლიათ შექმნათ კალენდარი სამუშაო ფურცელში. ეფექტი შეგიძლიათ იხილოთ ქვემოთ მოცემულ სურათზე.კალენდარი

შეგიძლიათ შეიყვანოთ რამდენიმე დავალება ამ კალენდარში. და ფუნქცია იგივეა, რაც მემორანდუმი. Excel-ის გამოყენებით, ეს ამოცანები უფრო ნათელი გახდება. ახლა მიჰყევით ნაბიჯებს შემდეგ ნაწილში და ნახეთ, როგორ მუშაობს.

შექმენით კალენდარი

  1. სამუშაო ფურცლის გასახსნელად კლავიატურაზე დააჭირეთ ღილაკს "Alt +F11".
  2. და შემდეგ ჩადეთ ახალი მოდული Visual Basic რედაქტორში.
  3. ახლა დააკოპირეთ შემდეგი კოდები ახალ მოდულში:
Sub Create_Monthly_Calender()
    Dim firstweekday As Integer, EndDay As Integer, _
    FirstWeekColumnIndex As Integer, AssignmentDate As Integer, _
    FirstCountNumber As Integer, SecondCountNumber As Integer, _
    LastDay As Range, objRange As Range, RowIndexofLastday As Integer, FirstCountforTargetRange As Integer, SecondCountforTargetRange As Integer

    firstday = InputBox("Input the year, month and the first day with this format: year/month/day")
    If firstday = "" Then Exit Sub


    Range("A1:G1").Merge
    Range("A1") = Year(firstday) & "." & Month(firstday)
    Range("A2") = "Sunday"
    Range("A2").AutoFill Destination:=Range("A2:G2"), Type:=xlFillDefault
    firstweekday = Application.WorksheetFunction.Weekday(firstday)
    Cells(3, firstweekday) = 1

    Select Case Month(firstday)
        Case 1, 3, 5, 7, 8, 10, 12
            EndDay = 31
        Case 4, 6, 9, 11
            EndDay = 30
        Case 2
            If (Year(firstday) Mod 4) = 0 And (Year(firstday) Mod 100) <> 0 Or ((Year(firstday) Mod 400) = 0) Then
                EndDay = 29
            Else
                EndDay = 28
            End If
    End Select

    For FirstWeekColumnIndex = 1 To (7 - firstweekday)
        Cells(3, firstweekday).Offset(0, FirstWeekColumnIndex) = Cells(3, firstweekday).Offset(0, FirstWeekColumnIndex - 1) + 1
    Next FirstWeekColumnIndex

    AssignmentDate = Range("G3") + 1
    For FirstCountNumber = 2 To 10 Step 2
        For SecondCountNumber = 0 To 6
            Cells(3, firstweekday).Offset(FirstCountNumber, 1 - firstweekday + SecondCountNumber) = AssignmentDate
            AssignmentDate = AssignmentDate + 1
            If Cells(3, firstweekday).Offset(FirstCountNumber, 1 - firstweekday + SecondCountNumber) = EndDay Then
                Exit For
            End If
        Next SecondCountNumber
        If Cells(3, firstweekday).Offset(FirstCountNumber, 1 - firstweekday + SecondCountNumber) = EndDay Then
            Exit For
        End If
    Next FirstCountNumber

    ’set format for the range
    With Range("A1")
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .Font.Size = 16
        .Font.Bold = True
        .Interior.Color = RGB(196, 202, 201)
    End With

    With Range("A2:G2")
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .Font.Bold = True
    End With

    For Each LastDay In ActiveSheet.UsedRange
        If LastDay = EndDay Then
            RowIndexofLastday = LastDay.Row
        End If
    Next

    For FirstCountforTargetRange = RowIndexofLastday To 3 Step -2
            With Range("A" & FirstCountforTargetRange, "G" & FirstCountforTargetRange)
                .HorizontalAlignment = xlCenter
                .VerticalAlignment = xlCenter
                .RowHeight = 20
            End With
    Next FirstCountforTargetRange

        For SecondCountforTargetRange = RowIndexofLastday + 1 To 4 Step -2
            With Range("A" & SecondCountforTargetRange, "G" & SecondCountforTargetRange)
                .HorizontalAlignment = xlCenter
                .VerticalAlignment = xlCenter
                .Font.Bold = True
                .RowHeight = 50
                .ColumnWidth = 12
            End With
    Next SecondCountforTargetRange

    Set objRange = Range("A1", "G" & (RowIndexofLastday + 1))
    With objRange.Borders
        .Color = vbBlack
        .Weight = xlThin
        .LineStyle = xlContinuous
    End With

    ActiveWindow.DisplayGridlines = False
    Cells(3, firstweekday).Offset(1, 0).Select
End Sub

ამრიგად, ძალიან მარტოხელა მაკროა. მაგრამ თქვენ შეგიძლიათ პირდაპირ გამოიყენოთ იგი. და თქვენ არ გჭირდებათ მისი შეცვლა.

  1. შემდეგ დააჭირეთ ღილაკს "F5" კლავიატურაზე.
  2. ფანჯარაში, რომელიც გამოჩნდება, შეიყვანეთ პირველი დღის თარიღი ფორმატით "წელი/თვე/დღე". "დღე" შეიძლება იყოს ამ თვის ნებისმიერი დღე, აქ ჩვენ შევიყვანთ "1".შეყვანის თარიღი
  3. და შემდეგ დააჭირეთ ღილაკს "OK". შემდეგ თქვენ დაუბრუნდებით რედაქტორს. შედეგის შესამოწმებლად, შეგიძლიათ დაუბრუნდეთ სამუშაო ფურცელს.

კალენდარი უკვე გამოჩნდა სამუშაო ფურცელში. და კურსორი განთავსდება პირველი დღის ცარიელ უჯრედზე.შედეგი

მეორეს მხრივ, თუ არ ხართ კმაყოფილი უჯრედების ფორმატით, ასევე შეგიძლიათ შეცვალოთ კოდები თქვენი უპირატესობის მიხედვით. ამ კალენდრით დარწმუნებული ხართ, რომ გააუმჯობესებთ სამუშაო ეფექტურობას.

Excel არ არის ნაკლებად მიდრეკილი წარუმატებლობისკენ

თუ Excel-ს ხშირად იყენებთ, ადვილი იქნება იმის აღმოჩენა, რომ Excel მუდმივად დაზიანებულია. უმეტეს შემთხვევაში, პრობლემის გადაჭრა შესაძლებელია Excel-ის გამორთვით და შემდეგ მისი გადატვირთვით. თუმცა, ზოგჯერ Excel-ის სერიოზულ დაზიანებას წააწყდებით. ამ ეტაპზე კი შეგიძლიათ გამოიყენოთ ჩვენი ძლიერი ინსტრუმენტი. Excel xlsx მონაცემთა შეცდომის გამოსწორებაამ ხელსაწყოს გამოყენებით, თითქმის ყველა შეცდომის მარტივად გამოსწორებაა შესაძლებელი.

ავტორი შესავალი:

ანა მა არის მონაცემთა აღდგენის ექსპერტი DataNumen, Inc., რომელიც მსოფლიო ლიდერია მონაცემთა აღდგენის ტექნოლოგიებში, მათ შორის Word docx ფაილის შეკეთება და Outlook სარემონტო პროგრამული პროდუქტები. დამატებითი ინფორმაციისთვის ეწვიეთ www.datanumen. ერთად

გააზიარე ახლა:

კომენტარები დახურულია.