【问题标题】:Excluding Multiple Slicers when clearing all slicers using VBA使用 VBA 清除所有切片器时排除多个切片器
【发布时间】:2018-10-14 23:59:39
【问题描述】:

我有一组需要清除的切片器,不包括 2 个需要保留为所选内容的切片器。我目前使用的代码允许我排除 1 个切片器,但我找不到排除第 2 个切片器的正确方法。下面的代码是我正在使用的:

Sub Clearslcr()
    Dim Slcr As SlicerCache
    Dim SL As Slicer
    For Each Slcr In ActiveWorkbook.SlicerCaches
        For Each SL In Slcr.Slicers
            If SL.Parent.Name = ActiveSheet.Name Then
                If InStr(SL.Name, "Measure") = False Then
                    Slcr.ClearManualFilter
                End If
            End If
        Next SL
    Next Slcr
End Sub

谁能告诉我如何使它排除两者?我试图排除“测量”和“当前与比较”,似乎可以做其中之一! (刚开始使用 VBA,所以边学边学!)

【问题讨论】:

  • If Not (InStr(SL.Name, "Measure")) And Not (InStr(SL.Name, "Current vs Comparison")) Then
  • 您好,感谢以上内容,现在这会删除工作表上的所有切片器,我已经检查过,代码与切片器名称匹配,但似乎将其全部删除。
  • 玩一下,可能是你需要Or而不是And :) 把Not也去掉——只是猜测——If InStr(SL.Name, "Measure") or InStr(SL.Name, "Current vs Comparison")
  • 或者现在只清除“当前与比较”的切片器。并且似乎正在清除所有切片器:(将继续使用组合
  • 你能手动和record a macro吗?可能应该立即进行清理,idk ...

标签: vba excel slicers


【解决方案1】:

如果您想从 for-loop 中排除 2 个变量,可以使用这样的示例:

Sub TestMe()

    Dim bar, foo
    bar = Array(1, 2, 3, 4, 5)

    For Each foo In bar
        If Not (foo = 1) And Not (foo = 2) Then
            Debug.Print foo
        End If
    Next foo

End Sub

它打印3,4,5,直到12被忽略。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多