Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA:从复选框中取消隐藏数组中包含值的行_Vba_Excel_Checkbox - Fatal编程技术网

VBA:从复选框中取消隐藏数组中包含值的行

VBA:从复选框中取消隐藏数组中包含值的行,vba,excel,checkbox,Vba,Excel,Checkbox,我有三个复选框(猫、狗、鼠标),我在excel中有以下数据集(字母是列) 我有以下代码: 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.EntireRo

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

我有以下代码:

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
你知道怎么做吗

先谢谢你


@Dinks123能否将此问题的答案标记为完整?@Dinks123能否将此问题的答案标记为完整?
 A      B       C
Dog    Mouse   Cat
Dog    Cat     Cat
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