我正在尝试从第2行中删除工作表中的空白列。如果整列是空白的,我想删除该列。
我从第2行开始的原因是因为我在第1行中有标题。如果该列为空,这些也将被删除。我如何从第2行开始?
Sub Delete_Cols()
Dim MyRange As Range
Dim iCounter As Long
Set MyRange = ActiveSheet.UsedRange
For iCounter = MyRange.Columns.Count To 1 Step -1
If Application.CountA(Columns(iCounter).EntireColumn) = 0 Then
Columns(iCounter).Delete
End If
Next iCounter
End Sub
我需要宏来开始检查第2行中的空白列。
答案 0 :(得分:0)
如果您想从第2行开始,则需要Clear
而不是Delete
。
这是一种解决方法:
If Application.CountA(Columns(iCounter).EntireColumn) = 0 Then
Range(Cells(2, iCounter), Cells(2 ^ 16, iCounter)).Clear
End If
它将清除第2行到第65536行的范围。可能它会以你想要的方式工作。
答案 1 :(得分:0)
下面的VBA会删除工作表中的列,如果它是空的:
Sub DeleteEmptyColumns()
'Updateby20140317
Dim rng As Range
Dim InputRng As Range
xTitleId = "KutoolsforExcel"
Set InputRng = Application.Selection
Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)
Application.ScreenUpdating = False
For i = InputRng.Columns.Count To 1 Step -1
Set rng = InputRng.Cells(1, i).EntireColumn
If Application.WorksheetFunction.CountA(rng) = 0 Then
rng.Delete
End If
Next
Application.ScreenUpdating = True
End Sub
答案 2 :(得分:0)
如果我说得对,你想看看从第2行开始的列是否为空,如果是,yoo想要删除该列。如果每列都有标题,则代码只需要一个小的修正
Sub Delete_Cols()
Dim MyRange As Range
Dim iCounter As Long
Set MyRange = ActiveSheet.UsedRange
For iCounter = MyRange.Columns.Count To 1 Step -1
If Application.CountA(Columns(iCounter).EntireColumn) = 1 Then
Columns(iCounter).Delete
End If
Next iCounter
End Sub