【发布时间】:2022-01-12 13:42:02
【问题描述】:
我正在处理 Excel 中的一个宏,该宏将隐藏所有为空的列。但是,它们并不完全是空的,因为我希望标题仍然存在。例如,标题位于第 3 行。因此,对于 A 列,如果范围内没有数据(“A4:A”& rng),我希望隐藏 A 列,rng 是最后一行。我能够成功地为 A 列编写代码,从技术上讲,我可以为电子表格中的每一行编写此代码,但它从 A 列到 AU。那将是很多代码。 必须有一种方法可以遍历每一列并根据它们从第 4 行到最后一行的范围隐藏该列。请告诉我!
这是我的代码,仅适用于正确工作的 A 列。它遍历 A 列中的每个单元格,如果它们都是空的,则 cellsEmpty 为 True 并且该列被隐藏。如果任何单元格中有数据,则 cellsEmpty 为 False,我们退出 For。如何循环遍历每一列并将此代码应用于每一列?
Sub hideEmptyColumns()
rng = WorksheetFunction.CountA(Worksheets("Sheet1").Range("A1:A1000")) + 2
'+2 because of the top 2 blank rows
Dim i As Range
Dim cellsEmpty As Boolean
cellsEmpty = True
Application.ScreenUpdating = False
For Each i In Range("A4:A" & rng)
If i.Value <> "" Then
cellsEmpty = False
Exit For
End If
Next
If cellsEmpty = True Then
Columns("A").Hidden = True
End If
Application.ScreenUpdating = True
End Sub
【问题讨论】: