VBA:从checkbox中取消隐藏数组中包含值的行

我有三个checkbox(猫,狗,鼠标),我在Excel中有以下数据集(字母是列)。

ABC 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 

但是,我想要更改代码,以便当只有所有选定的条件出现在该行时隐藏行。 例如,如果我select“猫”和“狗”,则只显示下面的内容:

  ABC 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