实现隐藏空列的Excel 2013宏

时间:2014-05-06 21:23:17

标签: excel vba excel-vba

我想在Microsoft Excel 2013中实现一个宏,它隐藏没有条目的列。

在以下示例中,应在宏执行后隐藏B,D,G和I列。另一个宏应该使所有列再次可见。

Example Excel Sheet

只考虑第一行中有条目的列,并且只考虑第一列中有条目的行。

2 个答案:

答案 0 :(得分:2)

尝试一下:

Sub KolumHider()
    Dim N As Long, i As Long, wf As WorksheetFunction
    Set wf = Application.WorksheetFunction
    N = Cells(1, Columns.Count).End(xlToLeft).Column
    For i = 1 To N
        If wf.CountA(Cells(1, i).EntireColumn) < 2 Then
            Cells(1, i).EntireColumn.Hidden = True
        End If
    Next i
End Sub

答案 1 :(得分:1)

我今天在VBA做了一个速成课程,并为我的问题找到了以下解决方案:

Sub HideColumns()
    Dim N As Long, i As Long, wf As WorksheetFunction
    Set wf = Application.WorksheetFunction
    N = Cells(1, Columns.Count).End(xlToLeft).Column
    For i = 1 To N
        Set rnData = Range(Cells(1, i), Cells(1000, i)).SpecialCells(xlCellTypeVisible)
        If wf.CountA(rnData) < 2 Then
            Cells(1, i).EntireColumn.Hidden = True
        End If
    Next i
End Sub

因为我不是编程人员,所以我非常感谢有关该解决方案的任何评论。这个实现中是否存在一些错误,或者是否有更优雅的方法来解决问题?