以下是一个简单的 Excel VBA 代码示例,可以用于一键排课:\n\nvba\nSub 一键排课()\n Dim ws As Worksheet\n Dim startRow As Integer\n Dim endRow As Integer\n Dim numPeriods As Integer\n Dim numDays As Integer\n Dim periodLength As Integer\n Dim timeTable As Range\n Dim i As Integer, j As Integer\n \n ' 设置排课表所在的工作表和范围\n Set ws = ThisWorkbook.Worksheets("Sheet1")\n startRow = 2 ' 第一个课程的行号\n endRow = 10 ' 最后一个课程的行号\n numPeriods = 7 ' 一天的课时数\n numDays = 5 ' 一周的天数\n periodLength = 50 ' 每个课时的时长(分钟)\n Set timeTable = ws.Range("B2:H10") ' 排课表的范围\n \n ' 清空原有的排课表\n timeTable.ClearContents\n \n ' 循环排课\n For i = startRow To endRow\n For j = 1 To numDays\n ' 计算当前课程的开始时间和结束时间\n Dim startTime As Date\n Dim endTime As Date\n startTime = TimeSerial(8, 0, 0) ' 第一节课的开始时间\n endTime = DateAdd("n", periodLength * (i - startRow), startTime)\n \n ' 将课程信息写入排课表\n timeTable.Cells(i - startRow + 1, j).Value = Format(startTime, "hh:mm") & "-" & Format(endTime, "hh:mm")\n \n ' 计算下一节课的开始时间\n startTime = DateAdd("n", periodLength, startTime)\n Next j\n Next i\nEnd Sub\n\n\n在这个示例中,我们假设排课表从单元格 B2 开始,每节课的时长为 50 分钟,一天有 7 节课,一周有 5 天。你可以根据实际情况进行适当修改。要使用这个代码,请按以下步骤操作:\n\n1. 打开 Excel 文件,按下 ALT+F11 进入 VBA 编辑器。\n2. 在 VBA 编辑器中,选择菜单栏中的 "插入" -> "模块",插入一个新的模块。\n3. 将上述代码复制粘贴到新模块中。\n4. 修改代码中的工作表名称、起始行号、结束行号以及其他参数,根据你的实际需求进行调整。\n5. 按下 F5 运行代码,即可在排课表中一键排课。\n\n请注意,这只是一个简单的示例代码,可能无法满足所有的需求。你可能需要根据具体情况进行进一步的修改和扩展。

Excel 一键排课 VBA 代码 - 自动生成课程表

原文地址: https://www.cveoy.top/t/topic/qo2g 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录