|创建一个不包含周末和节假日的月份的工作表在本文中,我们将创建一个宏来为指定年份的指定月份的每个工作日创建一个工作表,其中不包括假日列表中指定的所有日期。

在运行宏之前,需要三个输入。我们需要在单元格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]