【问题标题】:VBA: Unhide rows which contains value in an Array from a checkboxVBA:从复选框中取消隐藏包含数组中值的行
【发布时间】:2015-11-26 23:45:17
【问题描述】:

我有三个复选框(猫、狗、鼠标),并且我在 excel 中有以下数据集(字母是列)。

A      B       C
Cat   Cat     Mouse
Dog   Mouse     Cat
Mouse  Mouse     Dog
Dog    Cat       Cat

我有以下代码:

Dim num As Integer

arrcriteria = Array("Cat", "Dog", "Mouse")

Set temprange = ActiveSheet.Range("A1").End(xlDown)
Set temprange = Range(Range("A2"), temprange)

For Each z In temprange    
    z.EntireRow.Hidden = True    
    For num = 1 To 3    
       If Me.Controls("Checkbox" & num) Then    
          If InStr(1, z.Value, arrcriteria(num - 1), 1) = 1 Then    
              z.EntireRow.Hidden = False    
          Elseif InStr(1, z.offset(0,1).Value, arrcriteria(num - 1), 1) = 1 Then
              z.EntireRow.Hidden = False
          Elseif InStr(1, z.offset(0,2).Value, arrcriteria(num - 1), 1) = 1 Then
              z.EntireRow.Hidden = False
          Else    
              'Remain hidden    
          End If 
       End if
   Next num

但是,我想更改代码,以便在该行中仅存在 所有 选定条件时隐藏行。例如,如果我选择“猫”和“狗”,则仅显示以下内容:

 A      B       C
Dog    Mouse   Cat
Dog    Cat     Cat

你知道怎么做吗?

提前谢谢你

【问题讨论】:

    标签: vba excel checkbox


    【解决方案1】:
    Dim num         As Integer
    Dim RowString   As String
    Dim RowHide     As Boolean
    Dim Z           As Range
    
    arrcriteria = Array("Cat", "Dog", "Mouse")
    
    Set temprange = ActiveSheet.Range("A1").End(xlDown)
    Set temprange = Range(Range("A2"), temprange)
    
    For Each Z In temprange
    
        With Z
            Z.EntireRow.Hidden = False
            RowString = .Value & .Offset(0, 1).Value & .Offset(0, 2).Value
            RowHide = False
    
            For num = 1 To 3
                If Me.Controls("Checkbox" & num) And _
                InStr(1, RowString, arrcriteria(num - 1), 1) = 0 _
                Then RowHide = True
            Next num
    
            If RowHide Then Z.EntireRow.Hidden = True
        End With
    Next Z
    

    【讨论】:

    • @Dinks123 你能把这个问题的答案标记为完整吗?
    猜你喜欢
    • 2012-12-01
    • 2023-03-20
    • 2019-04-06
    • 1970-01-01
    • 2020-12-08
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多