欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > Excel中使用VBA自动生成排班表

Excel中使用VBA自动生成排班表

2025/3/9 16:26:03 来源:https://blog.csdn.net/m0_62979475/article/details/146115166  浏览:    关键词:Excel中使用VBA自动生成排班表

Excel中使用VBA自动生成排班表

  • 1. 背景
  • 2. 代码
  • 2. 代码使用
  • 4. 其他文章
  • 5. 更多素材
  • 快来试试吧🥰

1. 背景

在我们排班过程中,会有很多的问题,比如我们的有多少个人,从什么时候开始排班,节假日是否要进行排班等等一系列问题,手动排班的话会有很多的这样那样的问题,那我们为什么不能直接使用VBA代码进行排班呢,所以我们本篇文章就是基于这样的目的来展开的。

2. 代码

以下就是我们的自动排班的代码了,让我们来使用一下吧

Sub GenerateSchedule()Dim startDate As DateDim numPeople As IntegerDim peopleNames() As StringDim includeHolidays As BooleanDim includeWeekends As Boolean' 1. 自定义起始排班日期startDate = InputBox("请输入起始排班日期(格式:yyyy-mm-dd):")' 2. 自定义排班人员数量和姓名numPeople = InputBox("请输入排班人员数量:")ReDim peopleNames(1 To numPeople)For i = 1 To numPeoplepeopleNames(i) = InputBox("请输入第 " & i & " 个人员的姓名:")Next i' 3. 自定义选择是否要在节假日排班includeHolidays = MsgBox("是否包括节假日在内?选择是(是)或否(否)。", vbYesNo) = vbYes' 4. 自定义选择是否要在周六周日排班includeWeekends = MsgBox("是否包括周末在内?选择是(是)或否(否)。", vbYesNo) = vbYes' 输出结果到工作表Dim ws As WorksheetSet ws = ThisWorkbook.Sheets.AddDim currentDate As DatecurrentDate = startDateDim rowCounter As IntegerrowCounter = 1Do While Month(currentDate) = Month(startDate)If (includeWeekends Or (Weekday(currentDate) <> 1 And Weekday(currentDate) <> 7)) And (includeHolidays Or Not (IsHoliday(currentDate))) Thenws.Cells(rowCounter, 1).Value = currentDatews.Cells(rowCounter, 2).Value = peopleNames((rowCounter - 1) Mod numPeople + 1)rowCounter = rowCounter + 1End IfcurrentDate = currentDate + 1LoopMsgBox "排班表生成完成!"
End SubFunction IsHoliday(dt As Date) As Boolean' 在这里可以添加节假日判断的逻辑,例如国家法定节假日等' 这里简化为没有节假日的情况IsHoliday = False
End Function

2. 代码使用

点击开发工具,点击我们的VBA在这里插入图片描述
找到对应的位置,粘贴代码
在这里插入图片描述
关闭之后,点击宏
在这里插入图片描述
开始执行
在这里插入图片描述

输入起始排班日期
在这里插入图片描述
输入排班人员数量
在这里插入图片描述
输入排班人员的姓名
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
选择是否包括节假日
在这里插入图片描述
选择是否包括周末
在这里插入图片描述

完成

在这里插入图片描述
我们进行简单的美化
在这里插入图片描述

4. 其他文章

5. 更多素材

全部Excel练习素材 👈点击即可进行查看

如果对您有帮助,请您点赞、收藏、关注、转发,让更多的人看到。

快来试试吧🥰

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词