营地预订系统日历着色BUG:新多日预订未检测后续占用日期
营地预订日历冲突检测BUG修复
原有代码的核心问题是仅检查预订起始日期的单元格颜色,无法识别新预订日期范围与已占用日期(黄色单元格)的重叠冲突。以下是修复后的完整代码,重点优化了冲突检测逻辑:
Sheets("Bookings").Select rngG.Select '选中该行 Range("B" & (ActiveCell.Row)).Select '姓名列 Selection.Copy Sheets("Calendar").Select '定位到日历中预订周期的首日单元格 Application.Goto reference:=Range("calref").value ' 检查预订日期范围内是否存在已占用的黄色单元格 Dim nd As Integer Dim checkRange As Range Dim cell As Range nd = Range("numDays").value Set checkRange = ActiveCell.Resize(1, nd) ' 获取整个预订日期范围的单元格区域 ' 遍历区域内所有单元格,检测是否有黄色已占用日期 For Each cell In checkRange If cell.Interior.Color = vbYellow Then MsgBox "Pitch Occupied, choose another" UserForm2.Show Exit Sub End If Next cell ' 为新预订的日期着色(原功能保留) Dim cellToHighlight As Range Set cellToHighlight = ActiveCell With cellToHighlight .Offset(0, 0).Resize(1, nd).Interior.Color = vbYellow End With ' 粘贴姓氏(原功能保留)
关键修改说明
- 新增
checkRange变量,获取整个预订日期对应的单元格区域,而非仅起始单元格 - 通过
For Each循环遍历区域内每一个单元格,逐一检查颜色是否为vbYellow - 只要发现任意一个已占用的黄色单元格,立即触发提示并终止流程,彻底避免重叠预订
内容的提问来源于stack exchange,提问作者nickC
相关产品推荐
相关产品推荐

