Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 当特定单元格为空时,如何删除特定范围?_Vba_Excel - Fatal编程技术网

Vba 当特定单元格为空时,如何删除特定范围?

Vba 当特定单元格为空时,如何删除特定范围?,vba,excel,Vba,Excel,我有以下问题。 在excel电子表格中,我正在填充日历计划。 根据下拉列表,您可以更改月份和年份,因此日期会自动调整为周天数 Fixed week days = `E6:R6` Calendar dates = `E7:R7` Work Shifts = `E8:R15` 现在,当新的时间表填充时,就像在本例中一样,在10月1日之前没有“星期日”,那么我需要删除范围E8:E15中的所有名称 我在sub中尝试了IF-THEN-ELSEIF,这很有效,但仅适用于第一

我有以下问题。
在excel电子表格中,我正在填充日历计划。 根据下拉列表,您可以更改月份和年份,因此日期会自动调整为周天数

Fixed week days = `E6:R6`   
Calendar dates  = `E7:R7`    
Work Shifts     = `E8:R15`  

现在,当新的时间表填充时,就像在本例中一样,在10月1日之前没有“星期日”,那么我需要删除范围
E8:E15
中的所有名称

我在sub中尝试了IF-THEN-ELSEIF,这很有效,但仅适用于第一个范围-
E8:E15
。如果我将月份切换到9月份,我们从周六开始,那么所有单元格都会保持其值,但是
E8:E15
。这就像我只能做“1”如果循环,然后它停止

我正在寻找一段代码,它可以在整个星期内循环检查单元格是否显示日期或是否为空。唯一可能没有日期的周是第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的另一个问题时,我肯定会回来:)

我会先假设这个范围(“E8:E15”)。clearcontents不是一个拼写错误,尽管它是一个单列,而其他所有列都是两列

代码\::

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模块代码表中的代码不是需要重新键入才能进行测试/调试的代码图像。

请分享您尝试过的代码,以解决您的问题,而不是屏幕截图-这有助于我们帮助您。如果我了解您试图做的事,那么您的任务就过于复杂了,而且您根本不需要VBA,只需在工作表公式中使用一个简单的
=IF
语句,复制并粘贴到相邻单元格。这些名字一开始是怎么来的?例如,在您的第二张图片“Sunday”专栏中,单元格中是否有表示“Calvin”的公式?如果是,则在其周围环绕一条
=If
语句,以检查单元格belwo“Sunday”是否为空。如果是这样的话,这个单元格也应该是空白的。请注意,很难知道发生了什么或讨论它,因为您的图像不显示行/列编号,并且无法知道您的电子表格上是否有公式。(如前所述,屏幕截图可用于一般概述,但不用于查找代码/公式中的问题。)请参阅“”,以及如何创建。另外,请查看(您将获得您的第一枚徽章!),并查看,以了解有关此网站主题的更多信息。您好。感谢到目前为止的反馈。不添加行/列编号绝对有意义。这太愚蠢了。另外,不要在评论中添加代码,用任何新代码或信息编辑你的问题。