使用vba删除空列

时间:2018-03-09 07:50:10

标签: vba

With WS.UsedRange
        For iCol = .Columns.Count To 1 Step -1
            If WorksheetFunction.CountA(.Columns(iCol)) = 1 Then 
            .Columns(iCol).EntireColumn.Delete
        Next
    End With

如果我没有错,WorksheetFunction.CountA将计算非空列的数量。如果列不为空,WorksheetFunction.CountA(.Columns(iCol))= 1将给出结果True,因为值为1。

但是,我正在尝试删除空列,这段代码就是这样做的。但不确定此代码的工作原理。

此代码适用于删除空列。但是,目前尚不清楚。 有人可以帮我清楚吗?

1 个答案:

答案 0 :(得分:0)

您显示的代码无效,因为缺少End If.Columns(iCol).EntireColumn.Delete必须紧跟在同一行的Then

假设您的实际代码确实有效,那么您对WorksheetFunction.CountA的工作方式是正确的,这必然意味着如果您的列只有一个值(可能是某个标题),则认为它们是空的

当然这也意味着标题必须在想要的行

如果你想删除完全空列,你必须编码

If WorksheetFunction.CountA(.Columns(icol)) = 0 Then .Columns(icol).EntireColumn.Delete