VBA删除Excel

时间:2017-05-10 14:37:37

标签: vba excel-vba excel

在考虑将此标记为重复问题之前,请允许我向您保证,我找不到满足此非常简单需求的答案。 所以我有一张图片来帮助我描述我想要做的事情。 请向下滚动并传递图片。 Just for the example

想象一下,数据设置得很整齐。 第1至9行必须保持不变。 第22行等等必须保持不变。

从第21行到第10行(按预期方式)我希望代码检查该行是否为空。 如果该行为空白,我想删除该行。完全删除。 否则,我希望它不受影响。

因此在图片中,第1至9行保持不变。 从第21行到第10行,只剩下10和11。 第22行等等保持不变。

如果第一个单元格为空,则检查第一个单元格将执行此操作,我只想要正确的语法使其正确发生,并且仅在A21到A10中为此示例。

这可能很愚蠢,但由于某种原因,它让我很难做到正确,因为我是VBA方法的新手。

我确信会以某种方式涉及 EntireRow.Delete 方法 你对VBA的处理方式还不是很好。

这个问题的第一个答案非常接近我的需求,但到目前为止。

Excel VBA to delete blank rows within a range

问题是我不是很有经验,我不理解所有的方法,也没有传递给那个例子的所有参数。它有点复杂,我希望看到的是一些简单的东西,以一种理解正在发生的事情的方式记录,所以我可以在我的现实生活场景中实现它。

这个问题: Excel VBA: Delete entire row if cell in column A is blank (Long Dataset)

这个问题有一个ENTIRE电子表格的答案,对我来说没有用处。

正如你所看到的,我提供了一个例子,我不是要求你做我的工作,我只是老实说想学习如何做我的要求。

我不确定我是否需要一个用负步骤-1迭代的FOR,包括循环内的一些方法,或者如果有一个就绪方法,包括一个循环,所以在这里我要求更有经验的人如何要做点什么,可能很容易 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您需要从范围的末尾向后循环并删除相关的行索引,如此

for x=numrows to 1 step -1
    if ws.range("a" & x).value="" then ws.rows(x).delete
next x 

其中ws是您正在处理的工作表。