如何隐藏公式输出为0的列而不更改公式的值

时间:2019-05-11 16:22:08

标签: excel vba hide formula

我对此并不陌生,我试图取消隐藏所有列,然后隐藏一行中包含数字“ 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)都被隐藏了。

1 个答案:

答案 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
  1. 以您要循环的变量结束For循环是一种很好的做法。有助于保持代码的可读性,并避免嵌套循环中不必要的错误

    For i = 1 to 99
       'some code
    Next i 'note the i <- 
    
  2. 您无需检查它是否为公式,只需检查单元格中的值是否为

  3. 优良作法是为您正在使用的每个变量声明变量名,或者更好的方法是使用Option Explicit (代码的第一行)启用类似于一个“严格模式”