首页 > 解决方案 > 隐藏除基于组合框值的列之外的列

问题描述

寻找一些我试图纠正的代码的帮助。

结果应该是,当用户单击名为“Btn_LaSearch”的用户窗体上的按钮时,范围 E6:MB6 中的所有列都被隐藏,除了范围中的名称与用户窗体上的组合框中的名称匹配的列。

我到目前为止的代码看起来像这样......

Private Sub Btn_LASearch_Click()

    Range("A1").Select
    
    ActiveCell.Value = Cbo_LocalList.Value
    
    Dim rngFound As Range
    Dim Target As String
    
    
    If Target.Address(0, 0) = "A1" Then

        Application.ScreenUpdating = False
        
        With Range("E6:MB6")
            .EntireColumn.Hidden = False 
            If Target <> "" Then
               Set rngFound = .Cells.Find(Target, , , xlWhole, , xlNext, False) 
               
               If Not rngFound Is Nothing Then
                    .EntireColumn.Hidden = True 
                    rngFound.EntireColumn.Hidden = False 
                End If
          End If
        End With
        Application.ScreenUpdating = True
   End If
       
End Sub

我不断收到编译错误:无效的限定符,它突出显示了这一行。

如果 Target.Address(0, 0) = "A1" 那么

在 VBA 方面,我仍然是一个非常业余的人,因此感谢所有帮助。

亲切的问候,

标签: excelvbafilter

解决方案


我不确定您为什么要将名称粘贴到 A1 中,然后在您已经可以访问该名称时使用该名称进行搜索。

尝试这样的事情:

Private Sub Btn_LASearch_Click()

    Dim c as Range

    Application.ScreenUpdating = False
     
    For Each c In Range("E6:MB6")
        c.EntireColumn.Hidden = Not (c.Value = Cbo_LocalList.Value)
    Next
           
    Application.ScreenUpdating = True

End Sub

推荐阅读