2017-07-14 180 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