이 기사에서는 공휴일 목록에 지정된 모든 날짜를 제외하고 지정된 연도의 지정된 달에 대한 각 요일에 대한 시트를 만드는 매크로를 만듭니다.

매크로를 실행하기 전에 세 가지 입력이 필요합니다. J10 셀에 월 번호를 지정하고 J11 셀에 연도를 지정하고 B16 : B26 범위에 휴일 날짜 목록을 지정해야합니다.

입력 값을 지정한 후 제출 버튼을 클릭하여 매크로를 실행합니다.

ArrowMain

이 매크로는 공휴일 목록에 지정된 날짜를 제외하고 지정된 달의 각 요일에 대해 새 시트를 삽입합니다.

ArrowAfterRunningMacro

논리 설명

이 매크로에서는 DateSerial 함수를 사용하여 지정된 월의 마지막 날짜를 찾습니다. FOR 루프를 사용하여 해당 월의 시작 날짜에서 마지막 날짜까지 반복합니다. 지정된 공휴일 목록에 사용중인 날짜가 있는지 찾기 위해 찾기 기능을 사용했습니다.

[_GoBack] # Weekday 함수는 If 문과 함께 사용하여 날짜가 평일인지 주말인지 확인합니다. If 문은 날짜가 평일이고 공휴일 목록에없는 경우에만 새 시트를 삽입합니다. 위의 스크린 샷에서 볼 수 있듯이 휴일 목록에 12 월 6 일이 있으므로 12 월 6 일 ^ 일 시트는 생성되지 않습니다.

아래 코드를 따르세요

Option Explicit

Sub MonthApply()

'Declaring variables

Dim DVariable As Date

Dim RngFind As Range

Dim MonthNo, YearNo As Integer

Dim StartDate, EndDate As Date

'Disabling the screen updates

Application.ScreenUpdating = False

With Worksheets("Main")



'Getting month and year from cell J10 and J11 from "Main" sheet

MonthNo = .Range("J10").Value

YearNo = .Range("J11").Value



'Deriving start and end date

StartDate = DateSerial(YearNo, MonthNo, 1)

EndDate = DateSerial(YearNo, MonthNo + 1, 0)



'Looping through all the dates in the specified month

For DVariable = StartDate To EndDate



'Finding if date is marked as holiday

Set RngFind = .Range("B16:B26").Find(DVariable)



'Checking whether date is holiday, weekend or weekday

If RngFind Is Nothing And Weekday(DVariable, 2) < 6 Then



'Inserting new sheet after the last worksheet in the workbook

Worksheets.Add after:=Worksheets(Worksheets.Count)



'Renaming the active sheet

ActiveSheet.Name = Format(DVariable, "dd.mm.yy")

End If



Next DVariable



.Select

End With

Application.ScreenUpdating = True

End Sub

이 블로그가 마음에 들면 Facebook 및 Facebook에서 친구들과 공유하십시오.

여러분의 의견을 듣고 싶습니다. 작업을 개선하고 더 나은 서비스를 제공 할 수있는 방법을 알려주십시오. [email protected]로 문의 해주세요