我有以下问题。
在Excel电子表格中,我正在填充日历计划。
根据下拉列表,您可以更改月份和年份,因此日期会自动调整为工作日。
Fixed week days = `E6:R6`
Calendar dates = `E7:R7`
Work Shifts = `E8:R15`
现在,当新的日程安排填充并且像在这种情况下一样,在10月1日之前没有“星期日”,那么我需要删除范围E8:E15
中的所有名称。
我已经在子级中尝试了IF THEN ELSEIF,并且该方法有效,但仅适用于第一个范围-E8:E15
。如果我将月份切换为9月,而我们从星期六开始,则所有单元格都保持其值,但E8:E15
。就像我只能执行“ 1” IF循环然后停止一样。
我正在寻找遍历整个星期的代码,以检查单元格是否显示日期或为空。没有日期的唯一可能的星期是第1周,第5周和第6周。如上图所示,取决于月份的长短,会显示或多或少的日期。
更新: 嗨,它现在可以工作了,我可以通过以下方式解决它。
我的原始代码是:
If Sheets("schedule").Range("E5") = "" Then
Sheets("Schedule").Range("E8:E15").ClearContents
Elseif Sheets("schedule").Range("G5") = "" Then
Sheets("Schedule").Range("G8:G15").ClearContents
..依此类推,适用于我日历的所有其他范围。 如果
结束新代码为: 接下来,我只是尝试将它们分开放置。
If Sheets("schedule").Range("E5") = "" Then
Sheets("Schedule").Range("E8:E15").ClearContents
End if
If Sheets("schedule").Range("G5") = "" Then
Sheets("Schedule").Range("G8:G15").ClearContents
End if
....依此类推。
现在它运行正常。 由于某种原因,它在if结束之前无法运行多个IF循环。 感谢大家的所有快速帮助! 当我对Excel和VBA有另一个疑问时,我一定会回来的:)
答案 0 :(得分:0)
我将首先假设range(“ E8:E15”)。clearcontents虽然是一列,而其他所有都是2列,但这并不是一个错字。
代码¹:
sub buildSched()
dim c as long
with worksheets("schedule")
for c = 5 to 17 step 2
if .cells(5, c).value2 = vbnullstring
.cells(8, c).resize(8, 1 + abs(cbool(c > 5))).clearcontents
end if
next c
end with
end sub
如果range(“ E8:E15”)。clearcontents 是一个错字,则每次迭代都应清除两列,然后使用,
.cells(8, c).resize(8, 2).clearcontents
¹注释代码,可以从页面直接复制并粘贴到VBE中的模块代码表中。 不是一张需要重新键入代码以测试/调试的图像。