2017-07-14 345 views
-4

我发现了一些在线编码的单个列的代码,但需要隐藏多列,所以我编辑了一下。我一直在没有IF错误的情况下继续接收。VBA在Excel中隐藏多个列。否则没有IF

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

    Dim i As Integer 
    i = 0 

    If Range("B3").Value = 0 Then 

     For i = 0 To 144 
     Columns("D" + i).EntireColumn.Hidden = True 
     i = i + 4 

    Else 
     For i = 0 To 144 
     Columns("D" + i).EntireColumn.Hidden = False 
     i = i + 4 

    End If 

End Sub 

哪里可能会出错?

谢谢!

+3

所以你不喜欢Next'的'外观和从代码删除了这一改进? – Tehscript

+0

不确定你的意思?我发现的代码来自https://excel.tips.net/T003283_Hiding_Columns_Based_on_a_Cell_Value.html并且没有下一个。我从来没有使用VBA,所以我不知道“下一步” – ceeplusplus

回答

0

好试试这个代替,让我知道发生了什么,我们可以根据需要

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

Dim i As Long 


For i = 0 To 144 
    If Range("B" & i + 1).Value = vbNullString Then 
     Range("D" & i + 1).EntireColumn.Hidden = True 
     i = i + 4 
    Else 
     Range("D" & i + 1).EntireColumn.Hidden = False 
     i = i + 4 

    End If 
Next i 


End Sub 
+0

现在你正在检查'如果范围(“B3”)。值= 0'很多次,即使它是固定的。 – GSerg

+0

感谢您的回复。我还没有尝试过,但是如何增加需要隐藏的列。它看起来像我增加,但在代码中的位置将转换到需要隐藏的列也增加。对不起,我只是想跟着。 – ceeplusplus

+0

对不起!我现在明白你的问题。当我回家时我会更新答案! – user1