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

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

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

1. 背景

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

2. 代码

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

js 复制代码
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练习素材 👈点击即可进行查看

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

快来试试吧🥰

相关推荐
事圆则缓1 小时前
Android 开启线程的几种方式:Thread、线程池、HandlerThread 与协程
android
是枚小菜鸡儿吖2 小时前
TraceBack:基于TextIn xParse,统一解析PDF/Word/Excel/扫描件/截图,自动交叉核验维修报告真伪,带原文出处,让造假无处遁形
pdf·word·excel
半摆烂日常15 小时前
低代码平台API对接实践:接口鉴权与数据同步的完整实现
android·低代码·rxjava
事圆则缓16 小时前
volatile 使用场景全解析:它能保证什么,又解决不了什么
android
蒲公英内测分发17 小时前
智能投影仪参加海外展会,未上架的 Android 配套 App 怎么让客户限时试用?
android
ii_best17 小时前
按键精灵手机端开发安卓版实战:手写一个可最小化、可拖动的「运行日志悬浮窗」(附完整 源码 + 踩坑记录)
android·ios·智能手机·自动化·ai编程·按键精灵
终端安全笔记17 小时前
安卓做 MDM 管控,先分清三种注册入口
android·安全·智能手机
乌萨达18 小时前
手机模拟器安卓怎么用?电脑安装应用、玩手游与账号同步指南
android·智能手机·电脑·雷电模拟器
美狐美颜SDK开放平台18 小时前
Android与iOS直播APP美颜有什么区别?视频美颜SDK开发详解
android·ios·音视频·视频美颜sdk
春猿火20 小时前
某市-2026【网安·论道】misc-afterimage_note-wp
android