我对此并不陌生,我试图取消隐藏所有列,然后隐藏一行中包含数字“ 0”的列,问题是该数字是公式的结果。
这是我尝试过的:
Sub main()
Rows("1:1").EntireColumn.Hidden = False
Dim Col As Range
For Each Col In Columns("E:EX")
For Each Row In Rows("9:9")
Col.Hidden = Col.Find("0", , xlFormulas, xlWhole, , , False) Is Nothing
Next
Next
End Sub
上面的代码的结果是所有这些列(E:Ex)都被隐藏了。
答案 0 :(得分:1)
您在正确的轨道上,有点,但细节/需要改进的地方
Private Sub hide_zeroes()
Dim ws as Worksheet: Set ws = Sheets("Your sheet name") '<- edit me
Dim lc as Long: lc = ws.Cells(9, Columns.Count).End(xlToLeft).Column 'last active Column
Dim i as Long
For i = 1 to lc 'from first till last colummn
If ws.Cells(9, i) = "0" Then 'if 9th row of Column [i] is 0 Then
ws.Columns(i).EntireColumn.Hidden = True 'hide entire column
End If
Next i
End Sub
以您要循环的变量结束For
循环是一种很好的做法。有助于保持代码的可读性,并避免嵌套循环中不必要的错误
For i = 1 to 99
'some code
Next i 'note the i <-
您无需检查它是否为公式,只需检查单元格中的值是否为
优良作法是为您正在使用的每个变量声明变量名,或者更好的方法是使用Option Explicit
(代码的第一行)启用类似于一个“严格模式”