【问题标题】:Hide columns within a Range based on Row value根据行值隐藏范围内的列
【发布时间】:2016-01-19 08:24:08
【问题描述】:

我正在尝试隐藏工作表中的列。我有以下脚本。我希望范围是动态的。现在它正在查看工作表、表格,然后是第 3 列第 3 行到表格末尾。

我希望脚本查看表中的第 3 列,然后在第 3 列中找到包含等于单元格 A4 值的行。然后使用该行到表的末尾来执行 If Not 搜索。

我想不出一种方法来获取基于单元格值设置行值的范围。

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

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    我添加了第二个循环,首先查看第 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多