2016-01-18 94 views
0

我試圖隱藏工作表中的列。我有以下腳本。我希望範圍是動態的。現在它正在查看錶格,表格,然後是第3列第3行到表格末尾。在基於行值的範圍內隱藏列

我希望腳本查看錶格中的第3列,然後在第3列中找到包含值等於單元格A4值的行。然後使用該行到表的末尾執行If Not search。

我想不出一種方法來獲取範圍來設置一個基於單元格值的行值。

Sub Role_Filter_Button() 

    Dim cl As Range, rTest As Range 

    'Sets the range by starting with the third column in a table 
    Set rTest = Range(Worksheets("Know Our Business").ListObjects("Know_Our_Business").DataBodyRange(3, 3), Worksheets("Know Our Business").ListObjects("Know_Our_Business").DataBodyRange(3, 3).End(xlToRight)) 
    For Each cl In rTest 
     If Not InStr(1, cl.Value, Worksheets("Know Our Business").Range("A4").Value) > 0 Then 
     cl.EntireColumn.Hidden = True 
     End If 
    Next cl 
End Sub 

回答

0

我添加了一個第二環路圍繞第一看起來通過柱3.計數器計數的行,並且如果列中的值3個匹配在A4的值,將i然後用於設置其是行用於您的代碼。

Sub Role_Filter_Button() 

    Dim cla As Range, clb As Range, rTest As Range 
    Dim i As Long 

    Dim dTable As ListObject 

    Set dTable = ThisWorkbook.Worksheets("Know Our Business").ListObjects("Know_Our_Business") 
    i = 1 

    For Each cla In dTable.ListColumns(3).Range 
     If cla = ThisWorkbook.Worksheets("Know Our Business").Cells(4, 1) Then 
      Set rTest = Range(dTable.DataBodyRange(i, 3), dTable.DataBodyRange(i, 3).End(xlToRight)) 
       For Each clb In rTest 
        If Not InStr(1, cla.Value, Worksheets("Know Our Business").Range("A4").Value) > 0 Then 
         clb.EntireColumn.Hidden = True 
        End If 
       Next clb 
     End If 
     i = i + 1 
    Next cla 

End Sub