当前位置: 首页 > article >正文

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

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

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

1. 背景

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

2. 代码

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

Sub GenerateSchedule()
    Dim startDate As Date
    Dim numPeople As Integer
    Dim peopleNames() As String
    Dim includeHolidays As Boolean
    Dim includeWeekends As Boolean
    
    ' 1. 自定义起始排班日期
    startDate = InputBox("请输入起始排班日期(格式:yyyy-mm-dd):")
    
    ' 2. 自定义排班人员数量和姓名
    numPeople = InputBox("请输入排班人员数量:")
    ReDim peopleNames(1 To numPeople)
    
    For i = 1 To numPeople
        peopleNames(i) = InputBox("请输入第 " & i & " 个人员的姓名:")
    Next i
    
    ' 3. 自定义选择是否要在节假日排班
    includeHolidays = MsgBox("是否包括节假日在内?选择是(是)或否(否)。", vbYesNo) = vbYes
    
    ' 4. 自定义选择是否要在周六周日排班
    includeWeekends = MsgBox("是否包括周末在内?选择是(是)或否(否)。", vbYesNo) = vbYes
    
    ' 输出结果到工作表
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets.Add
    
    Dim currentDate As Date
    currentDate = startDate
    
    Dim rowCounter As Integer
    rowCounter = 1
    
    Do While Month(currentDate) = Month(startDate)
        If (includeWeekends Or (Weekday(currentDate) <> 1 And Weekday(currentDate) <> 7)) And (includeHolidays Or Not (IsHoliday(currentDate))) Then
            ws.Cells(rowCounter, 1).Value = currentDate
            ws.Cells(rowCounter, 2).Value = peopleNames((rowCounter - 1) Mod numPeople + 1)
            rowCounter = rowCounter + 1
        End If
        currentDate = currentDate + 1
    Loop
    
    MsgBox "排班表生成完成!"
End Sub

Function IsHoliday(dt As Date) As Boolean
    ' 在这里可以添加节假日判断的逻辑,例如国家法定节假日等
    ' 这里简化为没有节假日的情况
    IsHoliday = False
End Function

2. 代码使用

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

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

在这里插入图片描述

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

完成

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

4. 其他文章

5. 更多素材

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

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

快来试试吧🥰


http://www.kler.cn/a/577724.html

相关文章:

  • word插入图片,不改变图片大小
  • 体验OpenManus
  • git忽略特定文件或者文件夹
  • cmake、CMakeLists.txt、make、ninja
  • visual studio 2022 E0020: 未定义标识符 “string“
  • 【Azure 架构师学习笔记】- Azure Databricks (16) -- Delta Lake 和 ADLS整合
  • APM是怎么监控,原理是什么?Java Agent 又是什么?
  • 【机械视觉】C#+VisionPro联合编程———【三、加载CogToolBlock工具详解,以及实例】
  • 前端(AJAX)学习笔记(CLASS 4):进阶
  • 海量数据融合互通丨TiDB 在安徽省住房公积金监管服务平台的应用实践
  • docker springcloud k8s集成部署
  • linux的top指令解析
  • 基于Linux系统的边缘智能终端(RK3568+EtherCAT+PCIe+4G+5G)
  • Chain of Draft: 借鉴人类草稿思维让大型语言模型更快地思考
  • Mysql的卸载安装配置以及简单使用
  • LangChain构建语言模型驱动应用的强大框架
  • 大白话JavaScript实现一个函数,将字符串中的每个单词首字母大写。
  • 云原生边缘智能:构建分布式IoT设备的自主决策引擎
  • python语言总结(持续更新)
  • 机器始终是一个机器:技术本质与哲学边界