我想在Microsoft Excel 2013中实现一个宏,它隐藏没有条目的列。
在以下示例中,应在宏执行后隐藏B,D,G和I列。另一个宏应该使所有列再次可见。
只考虑第一行中有条目的列,并且只考虑第一列中有条目的行。
答案 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
因为我不是编程人员,所以我非常感谢有关该解决方案的任何评论。这个实现中是否存在一些错误,或者是否有更优雅的方法来解决问题?