Cách tạo Lịch trong Bảng tính Excel của bạn bằng VBA Script

Chia sẻ ngay bây giờ:

Excel có phạm vi sử dụng rộng rãi. Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách tạo lịch trong trang tính bằng cách sử dụng macro.

Ngoại trừ việc lưu trữ và phân tích dữ liệu trong Excel, bạn cũng có thể sử dụng nó để hoàn thành các tác vụ khác. Ví dụ: bạn có thể thu thập thông tin bằng cách sử dụng Excel hoặc bạn có thể ghi lại kế hoạch của mình trong trang tính. Hôm nay chúng tôi đã tìm thấy một cách sử dụng mới. Bạn có thể tạo lịch trong trang tính. Bạn có thể thấy hiệu ứng trong hình dưới đây.Xem Lịch

Bạn có thể nhập một số nhiệm vụ vào lịch này. Và chức năng giống như một bản ghi nhớ. Bằng cách sử dụng Excel, những nhiệm vụ đó sẽ rõ ràng hơn. Bây giờ hãy làm theo các bước trong phần sau và xem nó hoạt động như thế nào.

Tạo lịch

  1. Nhấn nút “Alt + F11” trên bàn phím để mở trang tính.
  2. Và sau đó chèn một mô-đun mới vào trình soạn thảo Visual Basic.
  3. Bây giờ sao chép các mã sau vào mô-đun mới:
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

Vì vậy, là một macro rất đơn độc. Nhưng bạn có thể trực tiếp sử dụng nó. Và bạn không cần phải sửa đổi nó.

  1. Sau đó nhấn nút “F5” trên bàn phím.
  2. Trong cửa sổ bật lên, nhập ngày của ngày đầu tiên với định dạng “Năm/Tháng/Ngày”. “Ngày” có thể là bất kỳ ngày nào trong tháng này, ở đây chúng tôi sẽ nhập “1”.Ngày nhập
  3. Và sau đó nhấp vào nút “OK”. Tiếp theo, bạn sẽ quay lại trình chỉnh sửa. Để kiểm tra kết quả, bạn có thể quay lại trang tính.

Lịch đã xuất hiện trong trang tính. Và con trỏ sẽ được định vị tại ô trống của ngày đầu tiên.Kết quả

Mặt khác, nếu bạn không hài lòng với định dạng ô, bạn cũng có thể sửa đổi mã theo sở thích của mình. Với lịch này, bạn chắc chắn sẽ cải thiện hiệu quả công việc của mình.

Excel không ít bị lỗi hơn

Nếu bạn thường xuyên sử dụng Excel, chắc hẳn bạn sẽ dễ dàng nhận thấy Excel thường xuyên bị lỗi. Hầu hết các trường hợp, thoát khỏi Excel rồi khởi động lại có thể giải quyết được vấn đề. Tuy nhiên, đôi khi bạn sẽ gặp phải lỗi Excel nghiêm trọng. Và lúc này, bạn có thể sử dụng công cụ mạnh mẽ của chúng tôi để... sửa lỗi dữ liệu excel xlsxBằng cách sử dụng công cụ này, hầu hết các lỗi đều có thể được giải quyết dễ dàng.

Giới thiệu tác giả:

Anna Ma là một chuyên gia phục hồi dữ liệu trong DataNumen, Inc., công ty hàng đầu thế giới về công nghệ khôi phục dữ liệu, bao gồm sửa chữa tệp Word docx và các sản phẩm phần mềm sửa chữa triển vọng. Để biết thêm thông tin, hãy truy cập www.datanumennăm

Chia sẻ ngay bây giờ:

Được đóng lại.