VBA 스크립트를 사용하여 Excel 워크 시트에 달력을 만드는 방법

지금 공유 :

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. 그런 다음 "확인"버튼을 클릭합니다. 다음으로 편집기로 돌아갑니다. 결과를 확인하기 위해 워크 시트로 돌아갈 수 있습니다.

달력은 이미 워크 시트에 나타납니다. 그리고 커서는 첫날의 빈 셀에 위치합니다.결과

반면 셀 형식이 만족스럽지 않은 경우 원하는대로 코드를 수정할 수도 있습니다. 이 캘린더를 사용하면 업무 효율성이 향상됩니다.

Excel은 실패 할 가능성이 적지 않습니다.

Excel을 자주 사용하는 경우 Excel이 항상 손상된다는 사실을 쉽게 알 수 있습니다. 미디엄ost 시간의 Excel을 종료 한 다음 restart 문제를 해결할 수 있습니다. 그러나 때로는 심각한 Excel 손상이 발생합니다. 그리고 지금 우리의 강력한 도구를 사용하여 Excel xlsx 데이터 오류 복구. 이 도구를 사용하여 almost 모든 오류는 쉽게 해결할 수 있습니다.

저자 소개 :

Anna Ma는 데이터 복구 전문가입니다. DataNumen, Inc.는 다음과 같은 데이터 복구 기술 분야의 세계적 리더입니다. Word docx 파일 복구 및 전망 수리 소프트웨어 제품. 자세한 내용은 WWW.datanumen.COM

지금 공유 :

댓글이 닫혀있다.